rancher2+docker+SpringCloud+jenkins+redis集群+mysql主从搭建:六、安装mysql主从服务 (通过rancher部署服务)
部署单机版mysql:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
停了刚创建的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会自动同步