MySQL主从数据库同步是一种高效的数据复制技术,通过将一个数据库服务器(主服务器)的数据复制到一个或多个从数据库服务器(从服务器),极大地提升了数据的安全性和系统的可用性,这种技术不仅可以在主服务器发生故障时提供实时的数据备份和恢复功能,还能实现数据的负载均衡和读写分离,优化系统性能。
配置步骤
主服务器配置
1、创建复制用户:
在MySQL中创建一个具有复制权限的用户,例如repl
@192.168.1.22
。
使用以下命令赋予权限:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.22' IDENTIFIED BY 'repl';
2、编辑my.cnf文件:
打开主服务器的my.cnf配置文件,添加或修改以下内容:
serverid=1 logbin=mysqlbin
确保serverid是唯一的标识符,并启用二进制日志记录。
3、启动MySQL数据库:
重启MySQL服务以使配置生效:
mysqld_safe user=mysql &
4、设置读锁并获取Binlog日志文件名和偏移量:
执行以下SQL语句:
mysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS;
记录下File和Position的值。
5、备份要同步的数据库:
使用mysqldump工具备份数据库:
$ mysqldump test > test.sql
6、解锁表:
解除读锁:
mysql> UNLOCK TABLES;
从服务器配置
1、编辑my.cnf文件:
打开从服务器的my.cnf配置文件,添加或修改以下内容:
serverid=2
确保serverid与主服务器不同,避免冲突。
2、启动从数据库:
重启MySQL服务以使配置生效:
mysqld_safe user=mysql &
3、对从数据库进行相应设置:
登录从服务器的MySQL,执行以下命令设置主服务器的信息:
CHANGE MASTER TO > MASTER_HOST='192.168.1.22', > MASTER_USER='repl', > MASTER_PASSWORD='repl', > MASTER_LOG_FILE='mysqlbin.0000010', > MASTER_LOG_POS=106;
4、启动从服务器slave线程:
启动从服务器的复制进程:
mysql> START SLAVE;
检查复制状态,确保Slave_IO_Running和Slave_SQL_Running都为Yes:
mysql> SHOW SLAVE STATUS\G;
常见问题解答
1、问题:在从数据库中查看slave状态时出现“The slave I/O thread stops because master and slave have equal MySQL server ids”错误怎么办?
答案:这个错误通常是因为主从服务器的serverid相同导致的,需要确保主从服务器的serverid不同,修改my.cnf文件中的serverid配置,然后重启MySQL服务。
2、问题:如何验证主从数据同步是否成功?
答案:可以在主服务器上创建一个测试表,然后在从服务器上查看是否同步了该表,在主服务器上执行:
USE test; CREATE TABLE user (id INT);
然后在从服务器上执行:
USE test; SHOW TABLES LIKE 'user';
如果能看到user表,说明主从数据同步成功。
通过以上步骤和注意事项,可以实现MySQL主从数据库同步,增强系统的安全性和稳定性。