前言:
Mysql主从使用docker方式运行快捷方便,使用docker可以快速部署测试环境预生产环境的MySQL主从服务
以下是在两台云主机或者两台服务器运行搭建mysql主从服务。
主机1:172.16.12.120 MySQL主
主机2:172.16.12.121 MySQL从
一 Docker run mysql 主
1.1 Docker run 命令:
注:如果您熟练使用docker,直接使用下面命令修改下挂载路径就可以使用了。
docker run -it --name mysql_master --privileged -p 3306:3306 -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro -v /data/mysql-data/conf/my.cnf:/etc/mysql/my.cnf -v /data/mysql-data/mysql-db:/var/lib/mysql -v /data/mysql-data/mysql-files/:/var/lib/mysql-files -v /data/mysql-data/logs:/var/log -e MYSQL_ROOT_PASSWORD=Mysql#xian123 -d mysql:5.7.27
1.2 mysql 数据本地持久化目录创建:
mkdir /data/mysql-data/{conf,mysql-db,logs,mysql-files} -p
chmod 777 /data/mysql-data/logs
1.3 创建MySQL 主 配置文件 my.cnf
vim my.cnf # 粘贴下面内容
[mysqld]
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
lower_case_table_names=1
skip-host-cache
log_bin=mysql-bin
server_id=1
binlog_format=row
sync-binlog=1
#指定哪些库不同步,其他库默认都同步
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
binlog-ignore-db=mysql
1.4 运行1.1命令启动mysql 你也可以将1.1命令制作成启动脚本使用,例如:
vim mysql_master_run.sh
#!/bin/bash
docker run -it --name mysql_master --privileged -p 3306:3306 -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro -v /data/mysql-data/conf/my.cnf:/etc/mysql/my.cnf -v /data/mysql-data/mysql-db:/var/lib/mysql -v /data/mysql-data/mysql-files/:/var/lib/mysql-files -v /data/mysql-data/logs:/var/log -e MYSQL_ROOT_PASSWORD=Mysql#xian123 -d mysql:5.7.27
保存后执行 sh mysql_master_run.sh
1.5 登录mysql 创建 MySQL 从同步账号信息
登录mysql_master容器:
docker exec -it mysql_master /bin/bash
mysql -uroot -p
输入密码:Mysql#xian123后 创建从库同步账号
注:下面IP信息修改为你当前网段信息
create user sale_rep@'172.16.12.%' identified by 'Rep#xian123';
grant replication slave on *.* to 'sale_rep'@'172.16.12%';
flush privileges;
查看master 服务状态,记录下当前bing-log 数值和pos偏移数值等会从服务使用
show master status;
quit;
exit 退出后 主库创建完成,下面创建mysql从
二 Docker run Mysql从库
注:在另外单独一台机器上运行以下操作
2.1 Docker run 命令:
注:如果您熟练使用docker,直接使用下面命令修改下挂载路径就可以使用了。
先创建个运行脚本等会使用方便
vim mysql_slave_run.sh
#!/bin/bash
docker run -it --name mysql_slave01 --privileged -p 3306:3306 -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro -v /data/mysql-data/conf/my.cnf:/etc/mysql/my.cnf -v /data/mysql-data/mysql-db:/var/lib/mysql -v /data/mysql-data/mysql-files/:/var/lib/mysql-files -v /data/mysql-data/logs:/var/log -e MYSQL_ROOT_PASSWORD=sheqm#spang123 -d mysql:5.7.27
2.2 mysql 数据本地持久化目录创建:
mkdir /data/mysql-data/{conf,mysql-db,logs,mysql-files} -p
chmod 777 /data/mysql-data/logs
2.3 mysql slave my.cnf 配置文件创建
vim my.cnf #粘贴以下内容
[mysqld]
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
#socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
lower_case_table_names=1
skip-host-cache
log_bin=mysql-slave01-bin
#binlog_format=row
#bashlog_bin=mysql-bin
server-id=2
#指定中继日志名字,不指定默认
relay_log =mysql-relay-bin
#指定只读
read_only =1
2.4 运行2.1创建的mysql_slave_run.sh 启动MySQL从服务
sh mysql_slave_run.sh
2.5 登录 mysql从服务
docker exec -it mysql_slave01 /bin/bash
mysql -uroot -p
输入密码后
执行下面语句:
change master to master_host='172.16.12.120',master_port=3306,master_user='sale_rep',master_password='Rep#xian123',master_log_file='mysql-bin.000002',master_log_pos=1586;
start slave; #启动slave
查看slave状态
show slave status \G
下面这两个状态为yes 主从设置成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
三 以上就是Docker 方式部署Mysql主从的完整过程,准备好机器可以复制粘贴上面命令一步步就可以完成MySQL主从部署,欢迎各位同仁及技术爱好者查阅,不到之处还望多多指正评论补充