MySQL主从复制是一种常见的数据库复制技术,用于实现数据在一个主数据库服务器和一个或多个从数据库服务器之间的同步。在主从配置中,主服务器负责接收和处理写操作,然后将这些变更通过binlog日志传播到从服务器,从服务器根据主服务器传来的日志来执行相同的操作,以保持数据的一致性。
通过主从复制,可以提高数据库系统的可伸缩性、可用性和容错能力。主从配置常用于分担主服务器的读压力、数据备份、灾难恢复、负载均衡等场景。在配置主从复制时,需要确保网络稳定、主从服务器配置相符、数据一致性等方面的考虑,以确保数据同步的可靠性和性能。
mysql安装跳过,我们直接从配置开始写
开始配置
- 配置/etc/my.cnf文件(server-id,log-bin,log-slave-updates),后重启mysqld
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=1
log-bin=master-bin
log-slave-updates=true
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
2.进入mysql中,创建授权用户
mysql> create user "slvZ"@"192.168.20.%" identified by'CL123.com"
Query 0K,0 rows affected(0.00 sec)
3.将mysql中内容授权;
mysql> grant replication slave on *.* to 'slvZ'@'192.168.20.%' with grant option;
Query OK,0 rows affected(0.0l sec)
4.刷新数据库
mysql> flush privileges;
Query OK,0 rows affected(0.0l sec)
5.查看数据库信息,(文件名称)
6.进入第二台关闭slave,(从数据库修改my.cnf的server-id为2)
STOP SLAVE;
Query OK,0 rows affected(0.0l sec)
RESET SLAVE;
Query OK,0 rows affected(0.0l sec)
CHANGE MASTER TO MASTER_HOST='192.168.20.130', MASTER_USER='slvZ', MASTER_PASSWORD='CJL123.com', MASTER_LOG_FILE='master-bin.000002', MASTER_LOG_POS=157, GET_MASTER_PUBLIC_KEY=1;
Query OK,0 rows affected(0.0l sec)
START SLAVE;
Query OK,0 rows affected(0.0l sec)
7.查看从数据库信息查看是否有两个yes
如果无法让两个线程保持yes,无法完成主从复制操作,记得防火墙设置通行规则
firewall-cmd --add-port=3306/tcp
firewall-cmd --add-service=mysql
开始连接
change master to master_host='主ip', master_user='授权用户',master_password='密码',get_master_public_key=1;
start slave;