mysql----搭建--一主一从,主从复制

搭建 MySQL 数据库主从复制

1、 MySQL 主从复制原理

主从复制原理图
主机将修改信息放在二进制日志(Binary log)中 , 通过网络IO 到从机所在地 , 然后写入 中继日志(Relay log) 最后同步到从机

2、主机配置(88.169)

[root@88 conf]# vi /etc/my.cnf

追加

#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库
binlog-do-db=testdb
binlog-do-db=orders
#设置logbin格式
binlog_format=STATEMENT

binlog 日志三种格式

日志格式 优点 缺点
STATEMENT
(默认)
1、解决了row level的缺点,不需要记录每一行的变化。
2、日志量少,节约IO,从库应用日志块。
一些新功能同步可能会有障碍,比如函数、触发器等
ROW 1、记录详细
2、解决statement level模式无法解决的复制问题。
日志量大,因为是按行来拆分
MIXED statement和row之间选择一种

通过binlog_format 指定
查看: show variables like "%binlog_format%";
快速修改: set global binlog_format='MIXED';

3、从机配置(88.170)

[root@88 conf]# vi /etc/my.cnf

追加

#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay

4、主机、从机重启 MySQL 服务

mysql restart

5、主机从机都关闭防火墙

# 查看防火墙状态
[root@88 conf]# systemctl status firewalld
# 关闭防火墙
[root@88 conf]# systemctl stop firewalld

6、在主机(88.169)上建立帐户并授权 slave

# 123123 为密码
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123123'; 

查询master的状态

show master status;

状态
记录下FilePosition的值
执行完此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化

7、在从机上配置需要复制的主机

命令模板

CHANGE MASTER TO MASTER_HOST='主机的IP地址',   
MASTER_USER='用户名',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值;

例:

CHANGE MASTER TO MASTER_HOST='66.88.88.169',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.000007',MASTER_LOG_POS=154;


启动从服务器复制功能

start slave;

查看从服务器状态

show slave status\G;


下面两个参数都是Yes,则说明主从配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果出错 ,看error提示

主从复制配置完成

8、如何停止从服务复制功能

stop slave;

9、如何重新配置主从

stop slave;
reset master;

均在mysql 中执行

10 如果需要 从机 , 只需要配置从机 即可


binlog 日志三种格式参考地址 : https://blog.csdn.net/m0_37814112/article/details/78638359

发布了119 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/getchar97/article/details/105226359