MySQL主从复制
Posted Just do it
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL主从复制相关的知识,希望对你有一定的参考价值。
数据库复制 replication 的实现原理:
1:主服务器凡运行语句,都产生一个二进制日志 binlog
2:从服务器不断读取主服务器的binlog
3:从服务器读取到的binlog转换为自身可执行的relaylog
4:执行relaylog
实现步骤:
1.首先确保主服务器打开二进制日志功能,这样,主服务器一旦有数据变化,立即产生二进制日志
2.从服务器也需要开启二进制日志和relay日志功能,这样可以从主服务器读取binlog并产生relaylog
3.在主服务器建立一个从服务器的账号,并授予读binlog的权限
4.指定从服务对应的主服务器,开启从服务器
具体实施:
现虚拟机下有2台linux,ip分别为192.168.153.158,192.168.153.159
1.158作为主服务器
2.159作为从服务器
3:保证主从3306端口互通
4:配置主服务器打开binlog
#给服务器起一个唯一的id
server-id=1
#开启二进制日志
log-bin=mysql-bin
#日志格式
binlog-format=mixed/row/statement
statement:2进制记录执行语句,如update....
row:2进制记录的是磁盘变化
语句长而磁盘变化少,宜用row,语句短,但影响上万行,磁盘变化大,宜用statement
mixed,混合的,由系统根据语句来决定
--给服务器起一个独特的id server-id=158 --声明2进制日志文件为mysql-bin.xxxx log-bin=mysql-bin --二进制日志的格式 mixed/row/statement binlog_format=mixed
重启mysql
5.配置从服务器
server-id=159 log-bin=mysql-bin relay-log=mysql-relay binlog-format=mixed
重启mysql
主服务器授权用户
grant replication client,replication slave on *.* to [email protected]‘192.168.153.%‘ identified by ‘repl‘; flush privileges;
在从服务器通过语句指定要复制的主服务器(注意,可以一主多从,不可一从多主)
change master to master_host=‘192.168.153.158‘, master_user=‘repl‘, master_password=‘repl‘, master_log_file=‘mysql-bin.000001‘, master_log_pos=98;
启动
start slave
至此,最简单的mysql主从复制即配置完成。
这里只是实现了主从复制,读写分离还没有实现,可以从应用层去实现,也可以用集群中间件如
官方的mysql_proxy,另外就是国产的中间件 amoeba
以上是关于MySQL主从复制的主要内容,如果未能解决你的问题,请参考以下文章