MySQL主从复制
前言
MySQL主从复制,更应该说主从备份吧,实现的原理很简单,在主服务器上的数据库所有改动,都会通知从服务器的数据库修改,那么实现数据库之间的备份,那天万一主服务器数据库崩了,可以直接切换到备份的数据库,有一点的容灾能力。当然,对于业务并发量很高的时候,可以进行读写分离,这样一定情况下缓解数据库的瓶颈。
实现方法
实现主从复制的重点就是server-id
(每台主机的唯一值,以便区分)。
修改mysql配置
# 找到数据库配置文件my.cnf文件,添加如下代码 [mysqld] log-bin=mysql-bin #开启二进制日志 server-id=1 #设置server-id(主从服务器上的值需要唯一)
重启MySQL,查看主服务器中二进制文件(执行下面命令查看)
SHOW MASTER STATUS;
下面的File以及Position在下面从服务器中需要用到。
创建自从复制通信账号
这里就用账号
test
、密码test
、从服务器IP123.123.123.123
,作为测试。
执行下列命令创建用户:CREATE USER 'test'@'123.123.123.123' IDENTIFIED BY 'test'; #创建用户 GRANT REPLICATION SLAVE ON *.* TO 'test'@'123.123.123.123'; #分配权限 flush privileges; #刷新权限
设置从服务器server-id(方法跟步骤一一样,需要注意server-id要唯一)
server-id=1 #设置server-id(主从服务器上的值需要唯一)
从服务器设置与主机通信
CHANGE MASTER TO MASTER_HOST='123.123.123.124', #123.123.123.124为主服务器IP MASTER_USER='test', #在步骤三中设置的账号 MASTER_PASSWORD='test', #在步骤三中设置的密码 MASTER_LOG_FILE='mysql-bin.011760', #在步骤二中二进制文件File值 MASTER_LOG_POS=398; #在步骤二中二进制文件位置Position
启动同步数据库
start slave;
查看状态
show slave status\G;
若是出现下面两个
Yes
值即为启动成功。Slave_IO_Running: Yes Slave_SQL_Running: Yes
到此,一个MySQL主从复制就完成。
对于在高迸发业务场景下,可以利用这个主从复制进行读写分离啦!