CentOS 7与MySQL 5.7.25主从复制实践

发布于:2024-04-11 ⋅ 阅读:(71) ⋅ 点赞:(0)

本文主要记录mysql主从复制的详细步骤,如果你还没来得及安装MySQL请参考CentOS 7实战:轻松实现MySQL 5.7.25的tar包离线安装
image.png
ProcessOn源文件地址

主从复制应用场景:

  • 从服务器作为主服务器的实时备份
  • 主从服务器实现读写分离(主写从读),从服务器实现负载均衡
  • 把多个从服务器根据业务重要性进行拆分访问(从服务器根据业务拆分)

以下是具体操作步骤:

Master主库配置操作:

1.修改my.cnf文件

vim /etc/my.cnf

2.添加如下配置

[mysqld]

#开启log-bin二进制日志(可以按照具体情况设置路径)
log-bin=/usr/local/mysql/log/mysql-bin

#配置唯一的服务器ID
server-id=1

#下面这两个不是必须要配置
#主要是为了使用带事务的InnoDB进行复制设置时尽可能提高持久性和一致性
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1

3.重启数据库并查看以下配置是否生效

#重启数据库
service mysqld restart

#登录数据库
mysql -uroot -p
#输入数据库密码

mysql> show variables like 'server_id';
mysql> show variables like 'log_bin';

#skip_networking默认是OFF关闭状态,启用后主从将无法通信
mysql> show variables like '%skip_networking%';

image.png
4.在主库创建用于主从复制的账号

#创建“reply用户”并指定可访问的IP地址
mysql> CREATE USER 'repl'@'%';
mysql> GRANT REPLICATION SLAVE ON *.*  TO  'repl'@'%'  identified by 'repl123';

5.查看主库的二进制日志的名称

#File 和 Position需要记录 后期配置需要用到
mysql> show master status\G

image.png

Slave从库配置操作:

1.测试之前在主库创建的账号是否可用

#10.211.55.51 是主库的服务器地址
#主库和从库建议都关掉防火墙 
#systemctl stop firewalld

mysql -urepl -p'repl123' -h '10.211.55.51'

2.成功连接后,退出mysql,修改my.cnf

vim /etc/my.cnf

#修改内容如下:

[mysqld]
# 配置唯一的服务器ID
server-id=2

3.重启数据库,并查看以下配置是否生效

service mysqld restart

image.png
4.配置复制参数

# 10.211.55.51 master主数据库服务器地址
mysql> CHANGE MASTER TO 
MASTER_HOST='10.211.55.51',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='repl123',
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=574;

# 启动 slave
mysql> start slave;

5.查看slave的进程状态

mysql> show processlist\G
mysql> show slave status\G

看到下图信息说明成功了。
image.png
6.若出错,则清理掉之前的配置,执行以下命令:

#停止slave
mysql> stop slave
mysql> reset slave all
#开启只读模式(从库执行这个)
mysql> set global read_only=1;

#关闭只读,可以读写
mysql> set global read_only=0;

7.进入测试阶段:可以连接数据库,使用主库创建数据库,查看从库是否有刚才新建的数据库即可。

注:本次安装的是测试环境,可以保证没有数据写入,若是正式环境,一定要注意先锁住master表,其次备份master,然后解锁master并将数据导入slave,最后在进行从库的操作。