rancher2+docker+SpringCloud+jenkins+redis集群+mysql主从搭建:六、安装mysql主从服务 (通过rancher部署服务)

部署单机版mysql:

docker pull mysql:8.0.17
docker tag mysql:8.0.17 192.168.109.137:5000/mysql:8.0.17
docker push 192.168.109.137:5000/mysql:8.0.17
docker rmi 192.168.109.137:5000/mysql:8.0.17
docker rmi mysql:8.0.17
创建mysql映射的文件夹:
mkdir -pv /water/runfile/docker_volume/mysql8/data
mkdir -pv /water/runfile/docker_volume/mysql8/conf
给138机器添加标签mysql=mysqlM
给139机器添加标签mysql=mysqlS
先rancher创建pvc(default的)
springcloud--存储--持久卷--添加PV
名称:nfs-mysql-pv
卷插件:NFS Share
路径:/water/runfile/docker_volume    服务器:192.168.109.137
只读:否
自定义:多主机读写
保存

创建PVC:--添加pvc
名称:nfs-mysql-pvc    命名空间:default
持久卷选刚创建的:nfs-mysql-pv
自定义:多主机读写
创建


在rancher里配置mysql服务,在容器内将配置文件给捞出来
名称:mysql8
镜像:192.168.109.137:5000/mysql:8.0.17    命名空间:default
3306    TCP    HostPort    3306
环境变量(增加):
MYSQL_ROOT_PASSWORD=123456
主机调度:mysql=mysqlM
数据卷:挂载到远程主机存储路径,选择"使用现有的pvc"
mysqlm-data
选择pvc:nfs-mysql-pvc
容器路径:/var/lib/mysql 子路径:mysql8/data
#/etc/mysql/my.cnf mysql8/conf/my.cnf 备注:先不加,启动完毕后修改再添加
高级选项,网络,选用主机网络
启动

获取mysql配置,然后修改
docker exec -it 容器id /bin/bash
mysql -u root -p 密码为我们设置的:123456
use mysql;
alter user 'root'@'%' identified with mysql_native_password by '12356';
flush privileges;
exit
cd /etc/mysql/
##/bin/cat my.cnf
##复制内容出来
ls
cd /var/lib/mysql
cp /etc/mysql/my.cnf .
这样挂载目录/water/runfile/docker_volume/mysql8/data/就有了my.cnf文件,复制出来修改
将配置文件加上几行配置:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

在[mysqld]下加上:
max_connections=10000
default-time_zone='+8:00'
character-set-client-handshake=FALSE
character_set_server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
wait_timeout=2147483
interactive_timeout=2147483

停止容器然后将my.cnf 复制到137机器的共享目录 mysql8/conf 里面
清除上次启动映射出的文件:rm -rf /water/runfile/docker_volume/mysql8/data/*
然后rancher上升级添加之前未添加的映射:/etc/mysql/my.cnf mysql8/conf/my.cnf
rancher重启mysql8
外部sqlyog测试连接,连不上,是因为我们rm -rf /water/runfile/docker_volume/mysql8/data/*;把之前的进入容器的设置也删了
重新进入容器设置一下就好:
docker exec -it 容器id /bin/bash
mysql -u root -p 密码为我们设置的:123456
use mysql;
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
select host,user,plugin,authentication_string from mysql.user;
exit

Navicat或者sqlyog等连接工具测试连接下
部署单机版mysql:

部署主从版mysql:

停了刚创建的mysql
修改mysql的配置文件,增加如下属性
server-id 属性的值需要每个mysql不一样

[client]
default-character-set=utf8mb4
socket=/var/run/mysqld/mysqld.sock
[mysql]
default-character-set=utf8mb4
socket=/var/run/mysqld/mysqld.sock
[mysqld]
max_connections=10000
default-time_zone='+8:00'
character-set-client-handshake=FALSE
character_set_server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
wait_timeout=2147483
interactive_timeout=2147483
port=3310
skip-host-cache
skip-name-resolve
general_log_file=/var/lib/mysql/query.log
slow_query_log_file=/var/lib/mysql/slow.log
log-error=/var/lib/mysql/error.log
log-bin=mysql-bin
server-id=10000

从的:
port=3311
server-id=20000

在rancher创建mysql主从
创建mysql映射的文件夹:
mkdir -pv /water/runfile/docker_volume/mysql8_cluster/3310/data
mkdir -pv /water/runfile/docker_volume/mysql8_cluster/3310/conf
mkdir -pv /water/runfile/docker_volume/mysql8_cluster/3311/data
mkdir -pv /water/runfile/docker_volume/mysql8_cluster/3311/conf
上传配置文件到对应的conf文件夹里

在rancher里配置主mysql服务:
mysql8clusterM
镜像:192.168.109.137:5000/mysql:8.0.17    命名空间:default
3310    TCP    HostPort    3310
环境变量(增加):
MYSQL_ROOT_PASSWORD=123456
主机调度:mysql=mysqlM
数据卷:挂载到远程主机存储路径,选择"使用现有的pvc"
mysqlm-data
选择pvc:nfs-mysql-pvc
容器路径:/var/lib/mysql 子路径:mysql8_cluster/3310/data
/etc/mysql/my.cnf mysql8_cluster/3310/conf/my.cnf
高级选项,网络,选用主机网络 ... 这里不使用主机网络,因为端口映射问题
启动
docker exec -it 容器id /bin/bash
mysql -u root -p 密码为我们设置的:123456
use mysql;
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
select host,user,plugin,authentication_string from mysql.user;
exit
Navicat或者sqlyog等连接工具测试连接下

从:rancher克隆修改一下
名称:mysql8clusterS
端口改下:3311
主机调度改下:mysql = mysqlS
数据卷改下:子路径中3310改为3311
启动
如上修改密码
Navicat或者sqlyog等连接工具测试连接下

使用连接工具,先连接主服务的数据库
依次执行
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';
flush privileges;
show master status;
可以看到主数据库的状态
使用数据库连接工具连接到从数据库,依次执行
CHANGE MASTER TO MASTER_HOST='192.168.109.138',MASTER_PORT=3310,MASTER_USER='root',
MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=1003;
#这里的 MASTER_LOG_FILE 和 MASTER_LOG_POS 是上面 show master status 命令查出来的值
start slave;
show slave status;
通过显示的数据判断是否主从建立成功( Slave_IO_Runing:yes 和 Slave_SQL_Runing:yes )
测试:
通过在主上创建库,表,写数据等~从192.168.109.139会自动同步
部署主从版mysql:

 

 

 

 

 

 

posted on 2022-01-04 17:04  NG-承  阅读(215)  评论(0编辑  收藏  举报

导航