

3.使用Docker主从搭建步骤
3.1. 新建主服务器容器实例mysql01
docker run --restart=always --privileged=true -d -v Users/free/code/log/mysqlDockerData/data:/var/lib/mysql -v Users/free/code/log/mysqlDockerData/conf:/etc/mysql/conf.d -v Users/free/code/log/mysqlDockerData/myconf/my.cnf:/etc/mysql/my.cnf -p 3308:3306 --name mysql01 -e MYSQL_ROOT_PASSWORD=1234 mysql
docker run --restart=always --privileged=true -d -v /Users/free/code/log/mysqlDockerData2/data:/var/lib/mysql -v /Users/free/code/log/mysqlDockerData2/conf:/etc/mysql/conf.d -v /Users/free/code/log/mysqlDockerData2/myconf/my.cnf:/etc/mysql/my.cnf -p 3309:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=1234 mysql





[mysqld]
#开启二进制日志
log-bin=mysql-bin
#标识唯一id(必须),一般使用ip最后位
server-id=1
#不同步的数据库,可设置多个
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=mysql
#指定需要同步的数据库(和slave是相互匹配的),可以设置多个
binlog-do-db=test
#设置存储模式不设置默认
binlog_format=MIXED
#日志清理时间
expire_logs_days=7
#日志大小
max_binlog_size=100m
#缓存大小
binlog_cache_size=4m
#最大缓存大小
max_binlog_cache_size=521m
4.2 修改完配置后重启master实例
[root@k8snode2 conf]# docker restart mysql01
进入主数据库(File :mall-mysql-bin.000003 和Position 371 后面要用 )
[root@k8snode2 conf]# docker exec -it mysql-master /bin/bash
root@079c84d293f0:/# mysql -uroot -proot
mysql> show master status;
+-----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------------+----------+--------------+------------------+-------------------+
| mall-mysql-bin.000003 | 371 | | mysql | |
+-----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec
5.配置从服务器
5.1 同理在/Users/free/code/log/mysqlDockerData2/myconf目录下新建my.cnf并添加配置
#开启二进制日志
log-bin=mysql-bin
server-id=2
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=mysql
#与主库配置保持一致
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60
5.2 修改完配置后重启slave实例
[root@k8snode2 conf]# docker restart mysql02
5.3 进入从服务器数据库,执行一下命令
[root@k8snode2 conf]# docker exec -it mysql-slave /bin/bash
root@b4fc23c7d9b4:/# mysql -uroot -proot
mysql> change master to master_host='192.168.248.128', master_user='root', master_password='root',
-> master_port=3307, master_log_file='mall-mysql-bin.000003', master_log_pos=371, master_connect_retry=30;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
注:上面的master_log_file是在配置Master的时候的File字段, master_log_pos是在配置Master的Position 字段。一定要一一对应
6.验证环节
6.1.主数据库新建库
mysql> ceate database t1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ceate database t1' at line 1
mysql> create database t1;
Query OK, 1 row affected (0.00 sec)
6.2.从服务器查看库,发现从库已经多了一个库t1数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| t1 |
+--------------------+
5 rows in set (0.01 sec)

文章转载自程序员恰恰,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




