1:centos环境。
2:安装docker。
进入目录
cd /hzero/conf/mysql/slave/conf
新建my.cnf配置文件
touch my.cnf
my.cnf添加一下内容
vi /hzero/conf/mysql/master/conf/my.cnf
#主从复制-主机配置
[mysqld]
#设置主机启动端口3316端口
port=3316
#主服务器唯一ID
server-id = 1
#启用二进制日志
log-bin=mysql-bin
#设置logbin格式
binlog_format = STATEMENT
#设置mysql的安装目录
#basedir=
#设置mysql数据库的数据的存放目录
datadir=/hzero/conf/mysql/master/data
#允许最大连接数
max_connections=200
#允许连接失败的次数
max_connect_errors=10
#服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#默认使用mysql_native_password插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
#忽略大小写
lower-case-table-names = 1
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8mb4
#MySQL导入导出文件限制
#secure_file_priv =
[client]
#设置mysql客户端连接服务端时默认使用的端口
port=3316
default-character-set=utf8mb4
从机配置
进入目录
cd /hzero/conf/mysql/slave/conf
新建my.cnf配置文件
touch my.cnf
my.cnf添加一下内容
vi /hzero/conf/mysql/slave/conf/my.cnf
#主从复制-从机配置
[mysqld]
#设置主机启动端口3318端口
port=3318
#主服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay
#启用从机日志
log-bin=mysql-slave-bin
#设置mysql的安装目录
#basedir=
#设置mysql数据库的数据的存放目录
datadir=/hzero/conf/mysql/slave/data
#允许最大连接数
max_connections=200
#允许连接失败的次数
max_connect_errors=10
#服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#默认使用mysql_native_password插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
#忽略大小写
lower-case-table-names = 1
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8mb4
#MySQL导入导出文件限制
#secure_file_priv =
[client]
#设置mysql客户端连接服务端时默认使用的端口
port=3318
default-character-set=utf8mb4
docker run \
-p 3316:3316 \
-e MYSQL_ROOT_PASSWORD=password \
-v /hzero/conf/mysql/master/data:/var/lib/mysql-files:rw \
-v /hzero/conf/mysql/master/logs:/var/log/mysql:rw \
-v /hzero/conf/mysql/master/conf/my.cnf:/etc/mysql/my.cnf:rw \
-v /etc/localtime:/etc/localtime:ro \
--name mysql3316_master \
--privileged=true \
--restart=always \
-d mysql
docker run \
-p 3318:3318 \
-e MYSQL_ROOT_PASSWORD=password \
-v /hzero/conf/mysql/slave/data:/var/lib/mysql-files:rw \
-v /hzero/conf/mysql/slave/logs:/var/log/mysql:rw \
-v /hzero/conf/mysql/slave/conf/my.cnf:/etc/mysql/my.cnf:rw \
-v /etc/localtime:/etc/localtime:ro \
--name mysql3318_slave \
--privileged=true \
--restart=always \
-d mysql
#主数据库创建用户slave并授权
#创建用户
create user 'slave'@'%' identified with mysql_native_password by 'password';
#授权
grant replication slave on *.* to 'slave'@'%';
#刷新权限
flush privileges;
#查询server_id值,# 也可临时(重启后失效)指定server_id的值(主从数据库的server_id不能相同)
show variables like 'server_id';
#查询Master状态,并记录File和Position的值
show master status;
#查询server_id值
show variables like 'server_id';
#若之前设置过同步,请先重置
stop slave;
reset slave;
change master to master_host='175.27.137.60',master_port=3316,master_user='slave',master_password='password',master_log_file='mysql-bin.000003',master_log_pos=607;
#启动同步
start slave;
#若出现错误,则停止同步,重置后再次启动
stop slave;
reset slave;
start slave;
#查询Slave状态
show slave status;
从数据库创建只读账号,否则会导致数据不一致问题
create user 'only_read'@'%' identified with mysql_native_password by 'password';
SHOW GRANTS FOR only_read;
grant SELECT on test_replication.* to 'only_read'@'%';
测试