在主服务器进行如下配置:
# 修改配置文件,执行以下命令打开mysql配置文件
vi /etc/my.cnf
# 在mysqld模块中添加如下配置信息
log-bin=mysql-bin #二进制文件名称
binlog-format=mixed # 二进制日志格式,有row、statement、mixed三种格式,row指的是把改变的内容复制过去,而不是把命令在从服务器上执行一遍,statement指的是在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。mixed指的是默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
server-id=1 # 要求各个服务器的id必须不一样
read-only=0 # 是否只读 0 不只读 1 只读
binlog-do-db=data1 # 同步的数据库名称 不写则表示同步所有库
binlog-do-db=data2 # 同步的数据库名称 多个库的配置方式
# 不同步以下库
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
# 创建同步用户
grant replication slave on *.* to 'sync'@'%' identified by '123456';
flush privileges;
# 重启mysql服务
systemctl restart mysqld
# 登录mysql数据库
mysql -uroot -p
# 查看master的状态
show master status\G
在从服务器进行如下配置:
# 修改配置文件,执行以下命令打开mysql配置文件
vi /etc/my.cnf
# 在mysqld模块中添加如下配置信息
log-bin=mysql-bin # 二进制文件名称
binlog-format=mixed # 二进制日志格式,有row、statement、mixed三种格式,row指的是把改变的内容复制过去,而不是把命令在从服务器上执行一遍,statement指的是在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。mixed指的是默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
server-id=2 # 要求各个服务器的id必须不一样
read-only=1 # 是否只读 0 不只读 1 只读
binlog-do-db=data1 # 同步的数据库名称 不写则表示同步所有库
binlog-do-db=data2 # 同步的数据库名称 多个库的配置方式
# 不同步以下库
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
# 重启mysql服务
systemctl restart mysqld
# 登录mysql
mysql -uroot -p
# 连接主服务器 master_log_file=主服务器show master status中的File master_log_pos=主服务器show master status中的Position
change master to master_host='192.168.85.11',master_user='sync',master_password='123456',master_port=3306,master_log_file='master-bin.000001',master_log_pos=154;
# 启动slave
start slave
# 查看slave的状态
show slave status\G(注意没有分号)
# 以下值为Yes则为成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
ps:主从都未创建数据库
Comments NOTHING