1. 在/user/local/share/下创建mysql文件夹,在mysql文件夹目录下创建4个文件夹分别是:
master1, master2, slave1, slave2分别在每个目录下建立data, conf, logs用于数据持久化
创建后如下
2.创建容器:
1)创建一个名为master1的mysql容器(主 mysql)
docker run -p 4306:3306 --name master1 -v /usr/local/share/mysql/master1/conf:/etc/mysql/conf.d -v /usr/local/share/mysql/master1/logs:/var/log/mysql -v /usr/local/share/mysql/master1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -itd mysql:8.0.22
2)创建一个名为master2的mysql容器(主 mysql)
docker run -p 4307:3306 --name master2 -v /usr/local/share/mysql/master2/conf:/etc/mysql/conf.d -v /usr/local/share/mysql/master2/logs:/var/log/mysql -v /usr/local/share/mysql/master2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -itd mysql:8.0.22
3)创建一个名为salve1 的mysql容器(从 mysql)
docker run -p 5306:3306 --name salve1 -v /usr/local/share/mysql/salve1/conf:/etc/mysql/conf.d -v /usr/local/share/mysql/salve1/logs:/var/log/mysql -v /usr/local/share/mysql/salve1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -itd mysql:8.0.22
4)创建一个名为salve2的mysql容器(从 mysql)
docker run -p 5307:3306 --name salve2 -v /usr/local/share/mysql/salve2/conf:/etc/mysql/conf.d -v /usr/local/share/mysql/salve2/logs:/var/log/mysql -v /usr/local/share/mysql/salve2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= 123456 -itd mysql:8.0.22
命令参数注解:
--name : 容器名称
-p : 映射容器端口号和宿主机端口号
-v : 挂载宿主机目录和docker容器中的目录,前面是宿主机目录,后面是容器内部目录
-d : 后台运行容器
-e :环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码
-itd : 指定数据库版本
3.查看是否将mysql容器创建成功
命令:docker ps
4.配置(双主双从)
1) 配置master1
命令:vim /usr/local/share/mysql/master1/conf/my.cnf 添加如下内容:
[mysqld] # master01主服务器01唯一ID server-id=4306 # 启用二进制日志 log-bin=mysql-bin #从库的中继日志,主库日志写到中继日志,中继日志再重做到从库 # relay-log=myslql-relay-bin # binlog保留时间7天 expire_logs_days=7 # binlog 文件的大小 max_binlog_size=1G #设置logbin格式。取值:STATEMENT (默认),ROW,MIXED binlog_format=ROW # 设置不要赋值的数据 binlog-ignore-db=mysql binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-ignore-db=sys # 设置需要复制的数据(可选) # 如果配置了此项,就是只复制那个数据库, 如果不指定就是所有 # binlog-do-db=需要复制的主数据库1 # 设置login格式 binlog_format=STATEMENT # 在作为从数据库的时候,有写入操作也要更新二进制日志文件 log-slave-updates # 该从库是否写入二进制日志。如果需要成为多主则可启用。只读可以不需要 log-slave-updates=1 #表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535 auto-increment-increment=2 # 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535 auto-increment-offset=1
2)配置master2
命令:vim /usr/local/share/mysql/master2/conf/my.cnf 添加如下内容:
[mysqld] # master01主服务器01唯一ID server-id=4307 # 启用二进制日志 log-bin=mysql-bin #从库的中继日志,主库日志写到中继日志,中继日志再重做到从库 # relay-log=myslql-relay-bin # binlog保留时间7天 expire_logs_days=7 # binlog 文件的大小 max_binlog_size=1G #设置logbin格式。取值:STATEMENT (默认),ROW,MIXED binlog_format=ROW # 设置不要赋值的数据 binlog-ignore-db=mysql binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-ignore-db=sys # 设置需要复制的数据(可选) # 如果配置了此项,就是只复制那个数据库, 如果不指定就是所有 # binlog-do-db=需要复制的主数据库1 # 设置login格式 binlog_format=STATEMENT # 在作为从数据库的时候,有写入操作也要更新二进制日志文件 log-slave-updates # 该从库是否写入二进制日志。如果需要成为多主则可启用。只读可以不需要 log-slave-updates=1 #表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535 auto-increment-increment=2 # 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535 auto-increment-offset=1
3)配置slave1
命令:vim /usr/local/share/mysql/slave1/conf/my.cnf 添加如下内容:
[mysqld]
# 从服务唯一ID
server-id=5306
# 启用中继日志
relay-log=mysql-relay
4)配置slave2
命令:vim /usr/local/share/mysql/slave2/conf/my.cnf 添加如下内容:
[mysqld]
# 从服务唯一ID
server-id=5307
# 启用中继日志
relay-log=mysql-relay