• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql容器之间的replication配置实例详解

mysql 搞代码 4年前 (2022-01-09) 19次浏览 已收录 0个评论

背景

上周公司培训了MySQL replication, 这个周末打算用所学来实践操作一下。

Master server:MySQL container mysql_master on NAS

  • NAS server IP: 192.168.1.108
  • mysql_master inner ip: 172.17.0.6

Slave server: MySQK container mysql_slave on Mac mini

  • Mac mini docker host IP: 192.168.1.139
  • mysql_slave inner ip: 172.17.0.2

准备MySQL container

准备mysql_master

创建两个目录用来存放MySQL文件

mkdir -p /mnt/md1/disk4/mysql
mkdir -p /mnt/md1/disk4/mysql-files

创建用于测试的master mysql node

[root@TNAS-2664 disk4]# docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql_master -v /mnt/md1/disk4/mysql:/var/lib/mysql -v /mnt/md1/disk4/mysql-files:/var/lib/mysql-files mysql
3bebf0e21df6d9034ce8275b14ebb1616e11f5e2678b1e084d03c087ed91a72a

查看当前NAS上运行的mysql的container ID

[root@TNAS-2664 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
40db0be51460 mysql "docker-entrypoint..." 44 seconds ago Up 29 seconds 33060/tcp, 0.0.0.0:3307->3306/tcp mysql_master
db5f6a287a21 mautic/mautic "/entrypoint.sh ap..." 2 weeks ago Up 11 days 0.0.0.0:8082->80/tcp mautic
dc1eac509c70 qianliu/mediawikiwithcomposer "docker-php-entryp..." 2 weeks ago Up 11 days 0.0.0.0:8086->80/tcp sarawiki
<em>本文来源[email protected]搞@^&代*@码)网5</em>b5c0a00f5f42 mysql "docker-entrypoint..." 2 weeks ago Up 11 days 0.0.0.0:3306->3306/tcp, 33060/tcp mysql2
911c0a8987ba qianliu/mediawikiwithcomposer "docker-php-entryp..." 2 weeks ago Up 11 days 0.0.0.0:8083->80/tcp qianliuwiki

使用docker cp命令将my.cnf复制到host机器上进行更改

docker cp 40db0be51460:/etc/mysql/my.cnf .

在my.cnf 加入以下配置

server-id = 1
 gtid-mode = ON # (replicated by GTID)
 enforce_gtid_consistency =1 #(replicated by GTID) 
 log-bin = master-log
 binlog_format = mixed
 expire-logs-days = 14
 sync-binlog = 1
 log-bin-trust-function-creators= 1
 
 # MASTER DB # 
 binlog-ignore-db = mysql,information_schema,performance_schema,sys
 auto-increment-increment = 2
 auto-increment-offset = 1
 
 # SLAVE DB #
 replicate-ignore-db = mysql,information_schema,performance_schema,sys
 relay_log = relay-log
 log-slave-updates = ON

将my.cnf 用docker cp 复制到mysql_master 容器中

docker cp my.cnf 40db0be51460:/etc/mysql/

进入mysql_slave,发现my.cnf因为权限文件 is ignored,这将导致刚刚写入到my.cnf的配置无法生效

[root@TNAS-2664 ~]# docker exec -it mysql_master /bin/bash
root@40db0be51460:/# mysql -uroot -p123456
mysql: [Warning] World-writable config file '/etc/mysql/my.cnf' is ignored.
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.

更改my.cnf的权限为664

root@40db0be51460:/# chmod 644 /etc/mysql/my.cnf
root@40db0be51460:/# exit

重启mysql_slave以使my.cnf生效

[root@TNAS-2664 ~]# docker restart mysql_master

9.进入mysql_master查看master status

mysql> show master status;
+-------------------+----------+--------------+-------------------------------------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB  | Executed_Gtid_Set |
+-------------------+----------+--------------+-------------------------------------------------+-------------------+
| master-log.000001 | 156 | | mysql,information_schema,performance_schema,sys |  |
+-------------------+----------+--------------+-------------------------------------------------+-------------------+
1 row in set (0.00 sec)

mysql> exit


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql容器之间的replication配置实例详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址