一、搭建准备
- 搭建环境需要对docker有个基本的了解,熟练的运用docker的基本命令,如不熟悉,可移步docker基本知识、docker基本命令进行一个初步的学习
- 版本说明:docker19.0,mysql8.0,不同版本之间的配置可能会有差异
二、开始搭建
-
服务搭建
-
从docker repo查找mysq8.0镜像,并拉去到容器
docker search 关键字 docker pull 镜像名:tag 拉去镜像 -
在自己熟悉的位置创建mysql配置文件夹用来存储mysql的配置,并在该目录下创建master和slave文件夹用来分别配置主从数据信息
#主服务配置目录 /home/mysql/master #从服务配置目录 /home/mysql/slave -
分别在master和slave目录下创建一个data文件夹(存储mysql信息)mysqld.cnf文件(存储mysql配置信息)
data(文件夹) mysqld.cnf(文件) -
mysqld.cnf配置信息
-
master配置
[mysqld] pid-file=/var/run/mysqld/mysqld.pid socket=/var/run/mysqld/mysqld.sock datadir=/var/lib/mysql secure_file_priv=/var/lib/mysql #Lower_case_table_names=1 symbolic-links=0 #服务id主从不能一样 server-id=1 #开启日志binlog log-bin=mysql-bin #不需要主从复制的库 binlog-ignore-db=mysql binlog-ignore-db=information_schema binlog-ignore-db=performance_schema #需要进行binlog主从复制的库 binlog-do-db=db-master -
slave配置
[mysqld] pid-file=/var/run/mysqld/mysqld.pid socket=/var/run/mysqld/mysqld.sock datadir=/var/lib/mysql secure_file_priv=/var/lib/mysql #Lower_case_table_names=1 symbolic-links=0 #服务id主从不能一样 server-id=2 #开启日志文件 log-bin=mysql-bin #不需要进行binlog日志记录的数据库 replicate_wild_ignore_table=mysql.% replicate_wild_ignore_table=information_schema.% replicate_wild_ignore_table=performance_schema.% #需要进行binlog日志记录的数据库 replicate_wild_do_table==db-master.%
-
-
启动master和slve容器
-
master启动
docker run -it -d --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -v /home/mysql/master/mysqld.cnf:/etc/mysql/my.cnf -v /home/mysql/master/data:/var/lib/mysql mysql -
slave启动
docker run -it -d --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -v /home/mysql/slave/mysqld.cnf:/etc/mysql/my.cnf -v /home/mysql/slave/data:/var/lib/mysql mysql
-
-
问题说明
通过前面几步,我们的mysql主从服务器已经搭建好了,如果遇到启动不了什么的我们可以查看mysql的启动日志查看具体的报错信息进行一一解决 docker logs mysql-master(容器名称),如果容器正常启动,此时我们可以通过客户端连接我们自己的mysql服务器,连接的时候可能会遇到各种问题,一般关闭防火墙能解决大部分问题。如果遇到拒绝客户端连接的问题,docker基本知识这里面有做了详细的处理可移步查看。
-
-
主从关系搭建
-
服务搭建完毕,我们需要进一步的设置他们的主从关系,可以选择在服务器端配置,为了方便,也可以在客户端进行配置,为了方便好看,我们选择在客户端进行配置,以下命令只需要在客户端输入sql命令即可,不再需要执行dokcer命令
-
查看主服务器信息(主服务执行)
show master status;Mysql-bin是我们master-slave的binlog日志,也是主从复制的关键文件,这里注意一下即可
-
从库关联(从服务器执行)
change master to master_host={你的主数据库ip},master_port={主数据库端口},master_user={用户名},master_password={密码},master_log_file='mysql-bin.000004',master_log_pos=156; #mysql-bin.000004主从复制的日志信息 -
重启slave查看设置状态
show slave status; #主要看slave_iq_running跟slave_sql_running值,都是yes代表成功;如果slave_sql_running为no,则执行以下sql stop slave; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; start slave; -
到此,mysql的主从关系就搭建完毕了,测试只需要在master服务器创建数据库观察slave服务器是否同步即可
-