---准备2台机器
192.168.0.121 (安装master)
192.168.0.122 (安装slave)
---192.168.0.121 master 机器
cd /data/db/mysql
mkdir data logs
-master.cnf
[mysqld]
max_connections = 2000
default-time_zone='+8:00'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#gtid:
server_id = 1 #服务器id
gtid_mode = on #开启gtid模式
enforce_gtid_consistency = on #强制gtid一致性,开启后对于特定create table不被支持
#binlog
log_bin = mysql-binlog
log_slave_updates = on
binlog_format = row #强烈建议,其他格式可能造成数据不一致
# 指定同步哪个数据库
binlog-do-db=d_sun
# 忽略以下数据库的同步
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
#relay log
skip_slave_start = 1
default_authentication_plugin = 'mysql_native_password' #更改加密方式
-docker-compose.yaml
version: "3.9"
services:
mysql:
restart: always
image: mysql:latest
container_name: mysql
ports:
- 3306:3306
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- ${PWD}/data:/var/lib/mysql
- ${PWD}/logs:/var/log/mysql
- ${PWD}/master.cnf:/etc/my.cnf
---192.168.0.122 slave 机器
-slave.cnf
[mysqld]
max_connections = 2000
default-time_zone = '+8:00'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#GTID:
server_id = 2 #服务器id(注意这里的servier_id不能master一样,另外每启动一台slave,都需要改动)
gtid_mode = on #开启gtid模式
enforce_gtid_consistency = on #强制gtid一致性,开启后对于特定create table不被支持
#binlog
log_bin =mysql-binlog
log_slave_updates = on
binlog_format = row #强烈建议,其他格式可能造成数据不一致
# 以下为多余配置,slave机器不需要配置,否则会导致mysql服务无法启动
# 指定同步哪个数据库
# binlog-do-db=d_sun
# 忽略以下数据库的同步
# binlog-ignore-db=mysql
# binlog-ignore-db=sys
# binlog-ignore-db=information_schema
# binlog-ignore-db=performance_schema
#relay log
skip_slave_start = 1
default_authentication_plugin = 'mysql_native_password' #更改加密方式
read_only = on #设置只读
super_read_only = on # 设置超级管理员也只允许读,不允许写
# mysql8.0以上版本,binlog保存时间 以秒为单位;默认2592000 30天
# mysql8.0以下版本,使用expire_logs_days,以天为单位
binlog_expire_logs_seconds=604800
-docker-compose.yaml
version: "3.9"
services:
mysql:
restart: always
image: mysql:latest
container_name: mysql
ports:
- 3306:3306
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- ${PWD}/data:/var/lib/mysql
- ${PWD}/logs:/var/log/mysql
- ${PWD}/slave.cnf:/etc/my.cnf
---启动mysql服务
docker-compose up -d
---查看server_id是否生效
show variables like '%server_id%';
# mysql 主从复制: https://abc.htmltoo.com/thread-46258.htm
签名:这个人很懒,什么也没有留下!