本文主要记录mysql主从复制的详细步骤,如果你还没来得及安装MySQL请参考CentOS 7实战:轻松实现MySQL 5.7.25的tar包离线安装
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%';
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
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
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
看到下图信息说明成功了。
6.若出错,则清理掉之前的配置,执行以下命令:
#停止slave
mysql> stop slave
mysql> reset slave all
#开启只读模式(从库执行这个)
mysql> set global read_only=1;
#关闭只读,可以读写
mysql> set global read_only=0;
7.进入测试阶段:可以连接数据库,使用主库创建数据库,查看从库是否有刚才新建的数据库即可。