MYSQL主从复制:
至少两台数据库服务器,分别可以设置为主服务器和从服务器,对主服务器的任何操作都会同样复制到从服务器上。
MYSQL主从复制原理:
MYSQL中有一种日志,叫做Bin日志(二进制日志),会记录下所有修改过数据库的SQL语句。主从复制的原理实际就是多台服务都开启BIN日志,然后主服务器会把执行过的SQL语句记录到BIN日志中,之后把这个BIN日志发给从服务器,在从服务器再把BIN日志中记录的SQL语句同样的执行一遍。这样从服务器上的数据就和主服务器相同了。
主从两形式:
一、发射形(一主多从):备份数据、读写分离
二、环形(多主)
适合场景:当一个网站要考虑跨地域优化时可以用来同步数据:
多地区时需要考虑:数据库同步、文件同步(linux自带的一个程序rsync)
解决ID冲突的办法:把每台服务器的ID都不同:可以设置ID开始的数字和每次加几:修改MYSQL配置文件:
auto_increment_increment=3 ; 每次加几
auto_increment_offset=1 ; 第一个数从几开始
实际搭建主从:
主服务器:192.168.30.135
从服务器:192.168.30.136
- 开启主服务bin日志且设置服务ID
找到/etc/my.cny
log-bin=mysql-bin //开启bin日志
server-id=135 //设置主服务ID,每台ID是唯一的
- 开启从服务bin日志且设置服务ID
找到/etc/my.cny
log-bin=mysql-bin //开启bin日志
server-id=136 //设置主服务ID,每台ID是唯一的
在主服务器上创建一个用来同步数据的账号
grant replication slave on *.* to 'slave'@'%' indentified by '666666'
-
查看主服务器BIN日志的信息(执行完之后记录下这两值,然后在配置完从服务器之前不要对主服务器进行任何操作,因为每次操作数据库时这两值会发生改变)
设置从服务器:
登录MYSQL
先关闭从服务器(每次重新配置时需要先关闭)
开始配置:
启动从服务器:
查看有没有成功:
注意:
在配置之前的数据库不会同步过去。解决办法:在配置之前先手动的把所有的原数据库导出到从服务器中。
失败:
- 肯定是SQL语句哪里写错
- 主从服务器的MYSQL版本号必须相同。