MYSQL主从复制功能介绍
主从原理:mysql中有一种日志叫做bin日志(二进制日志),这个日志会记录下所有对MYSQL进行修改的SQL语句。当向主服务器执行SQL语句时,这条SQL语句会被传递到从服务器上再执行一遍。
什么时候什么主从复制?
1. 备份
2. 优化(读写分离)
四台服务器互为主从(环形结构):
3. 优化(多地域)
设计一个留言板,但是考虑到不同地区的人使用的优化。(北京、上海、纽约、非洲)
在南北方分别添加服务器,然后配置一个智能的DNS服务器,可以解析用户到本地的服务器上,要注意的就是不同地域的数据的同步。
搭建步骤
- 修改每台MYSQL服务器的配置文件 my.cnf(windows下是my.ini)
添加:
log-slave-updates = true // 如果是环形多服务器,要设置这一项,
server-id = 1 // 设置服务器id 号,多台电脑的id不同相同
log-bin=mysql-bin // 开启 bin日志(主从的原理是使用Bin日志,所以必须开启) - 在主服务器上创建一个slave 账户(如果是环形就每台服务器上都创建一个)
GRANT REPLICATION SLAVE ON *.* TO 'username'@'%' IDENTIFIED BY 'password';
username : 是账号名
password : 是密码
练习:在MYSQL中创建一个abc账号密码为1234,这个账号只可以查询test数据库中的所有的表
GRANT SELECT ON test.* TO “abc”@”%” IDENTIFIED BY “1234” - 在主服务器查询信息(查看主服务器的信息)
FLUSH TABLES WITH READ LOCK; //缓存数据写到磁盘并锁表;如果是正在运行的服务器,需要锁
show master status;
记录下:File和Positiion的两个值 - 在从服务器上设置主服务器的IP地址等信息
CHANGE MASTER TO
MASTER_HOST='10.71.182.4' # 主服务器ip
,MASTER_USER='dcj', # 主服务器上slave账户名
MASTER_PASSWORD='dcj', # 主服务器上slave 密码
MASTER_LOG_FILE='mysql-bin.000001', # 主服务器上记录的file
MASTER_LOG_POS=251; # 主服务器上记录的Position - 启动从服务器(在从服务器执行)
start slave - 查看主从状态(在从服务器上执行)
show slave status \G
当你看到 Slave_IO_Running: Yes
Slave_SQL_Running: Yes
都为Yes的时候恭喜您配置成功了。 - mysql.ini添加设置自增的步长与起始数字(环形主从配置)
auto_increment_increment=3 ; 每次加几
auto_increment_offset=1 ; 从几开始加