MySQL主从复制
配置主从复制的前提,是主从两个MySQL版本号最好一致。然后我们来看看如何配置:
修改主数据库配置文件my.cnf(or my.ini)
开启二进制日志 设置server_id=1 重启主服务器MySQL服务
修改从数据库配置文件my.cnf(or my.ini)
设置server_id=2 重启从服务器MySQL服务
在主数据库新建一个用来复制的用户(下划线处可自定义)
1 | CREATE USER 'repl'@'%(此处也可定义为自己的从服务器IP)'IDENTIFIED BY 'slavepass'; |
- 在新建数据快照或者开启复制进程之前,需要定位主服务器二进制日志的坐标
1 | mysql> FLUSH TABLES WITH READ LOCK; --对于InnoDB表,该操作还会锁定commit操作 |
- 若你的主数据库已经存有数据,并且你希望从服务器同步这些数据。那么你需要新建一个数据快照。一般新建数据快照的方式有两种:MySQLdump;直接拷贝数据文件。
1 | shell> mysqldump --all-databases --master-data > dbdump.db --该事例表示将所有数据库导出到一个名为dbdump.db的文件中,附加的 --master-data命令,官方文档解释了一大堆,看着似懂非懂,反正都加上吧-。- 如果你的数据库比较大,那么将原始数据文件直接复制到从服务器比使用mysqldump要效率很多。 |
- 解锁主数据库
1 | mysql> UNLOCK TABLES; |
- 将主数据库的dump出的文件导入到从服务器
1 | shell> mysql < dbdump.db |
- 在从服务器开启复制进程
1 | mysql> START SLAVE; --一般情况下是启动不了的,必须先change master to |