拉去mysql 镜像
docker pull mysql
新建相关文件
cd /usr/mysql
mkdir master # 主数据库文件夹
mkdir slave # 从数据库文件夹
cd master #
mkdir data # 存放数据文件
vim my.conf # 内容下面有
cd ..
cd slave #
mkdir data # 存放数据文件
vim my.conf # 内容下面有
my.conf 内容如下
[mysqld]
datadir = /var/lib/mysql
server-id = 1
log-bin = mysql-bin
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1
sync_binlog=1
binlog-do-db =test # 需要同步的数据库
binlog-ignore-db=mysql # 不需要同步的数据库
binlog-ignore-db=information_schema
binlog-ignore-db=performation_schema
binlog-ignore-db=sys
新建容器
docker run --restart=always --name mysql-master -v /usr/mysql/master/my.cnf:/etc/my.cnf -v /usr/mysql/master/data:/var/lib/mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
docker run --restart=always --name mysql-slave -v /usr/mysql/slave/my.cnf:/etc/my.cnf -v /usr/mysql/slave/data:/var/lib/mysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
使用navicat 提示 caching_sha2_password问题
docker exec -it mysql-master bash
mysql -uroot -p123456
use mysql;
SELECT Host, User, plugin from user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
设置主从
进入主库
SHOW MASTER STATUS; # 复制前两个值 (File 和Position)
进入从库
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.20.118',MASTER_PORT=3307,MASTER_USER='root',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=910 for channel '1';
start slave;