mysql主从复制
MySQL主从复制是一种MySQL数据库的复制方式,可以将一个MySQL数据库的数据复制到另一个MySQL数据库上。主库是数据源,而从库是数据目的地。当主库上的数据发生变化时,从库将自动更新。
主从复制好处
提高数据库的可用性和可靠性,因为从库可以作为主库的备份,当主库出现故障时,可以快速切换到从库。
分担主库的读写压力,从库可以用于读取操作,减轻主库的负载。
提高数据库的性能,因为可以将从库部署在不同的地理位置,使用户更接近数据源。
将备份目标从主库转换成从库,可以解决在备份数据库时读写速度急剧减慢的问题
要求
1. 主库和从库需要能够相互访问,确保主库和从库之间的网络连接是可靠的,并且带宽足够大。
2. 主库和从库需要具备足够的硬件资源,包括 CPU、内存、磁盘等。确保服务器能够承受预期的负载,并且有足够的空间来存储数据。
3. 主库和从库需要运行相同版本的 MySQL,以确保兼容性。此外,还需要确保 MySQL 配置文件的设置相同,包括字符集、缓存大小等。
4. 在主从复制中,主库上的所有数据变更都会被同步到从库上。因此,在进行主从复制之前,需要确保主库和从库之间的数据库结构和数据是一致的。可以通过备份和还原数据来达到这个目的。
5. 在配置主从复制和读写分离后,需要定期监控系统性能和状态。可以使用 MySQL 相关的工具来监控数据库的运行状态,并及时处理异常情况。此外,还需要进行定期备份和数据恢复测试,以确保数据安全和可靠性。
6. 确认防火墙已经开放必要的端口。在 MySQL 主从配置中,需要开放的端口通常是 3306 端口(MySQL 服务端口)和 33061 端口(MySQL 服务端口的远程管理端口)。确保这些端口已经在防火墙上开放。如果使用的是云服务器,需要检查云服务商的安全组规则是否正确设置。例如,如果使用亚马逊 AWS,需要在安全组规则中添加允许来自其他服务器的 MySQL 流量的规则。如果使用的是 Linux 操作系统,则需要确认 iptables 防火墙是否已经配置正确。在 iptables 中需要开放的端口通常是 3306 端口和 33061 端口。如果使用的是 Windows 操作系统,则需要确认 Windows 防火墙是否已经配置正确。在 Windows 防火墙中需要开放的端口通常是 3306 端口和 33061 端口。
步骤
1. 主库配置
1). 在 my.cnf 文件中添加以下配置项:
[mysqld]
log-bin=mysql-bin #mysql是你的bin文件名,可随意做修改
改完之后重启mysql服务即可
2) 验证二进制日志是否已经启用,如果该命令可以正常执行并显示二进制日志文件列表,则说明二进制日志已经启用。
SHOW BINARY LOGS;
3)修改server-id, 配置项指定了主库的唯一标识符,从库需要用到该标识符进行连接。注意,改完后执行mysql重启服务
在 my.cnf 文件中添加以下配置项:
[mysqld]
server-id=1
4) 在主库上创建用于复制的账户
CREATE USER 'yourusername'@'主库的ip地址' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'yourusername'@'主库的ip地址';
5) FLUSH PRIVILEGES;#执行这行刷新权限
2. 从库配置
1)打开my.cnf/ini文件,添加以下配置:
[mysqld]
server-id=2
server-id 配置项指定了从库的唯一标识符,与主库的 server-id 配置项不同。
2)在从库上启动复制进程
CHANGE MASTER TO
MASTER_HOST='主机ip',
MASTER_USER='创建的用户名',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',#在主库使用 SHOW MASTER STATUS;查询File字段使用
MASTER_LOG_POS=12345;#在主库使用 SHOW MASTER STATUS;查询Position字段使用
3) 重启mysql服务
4) 查看状态
SHOW SLAVE STATUS \G;#在mysql中使用该查询命令查看
如果读到以下信息,即为成功
...
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 107
Slave_IO_Running:YES
Slave_SQL_Running:YES
...
如果Slave_IO_Running,Slave_SQL_Running都是no,请查看第二步是否在MASTER_LOG_FILE/MASTER_LOG_POS有误
结束语
数据库备份可直接备份从库,从而不影响主库,从库其实就相当于备份了主库了!
宠物免费领养小程序,欢迎来踩