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主从复制的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 主从复制与读写分离(原理深刻,过程详细,值得一看)

MySQL主从复制与读写分离

MySQL主从复制及读写分离实际部署与验证

MySQL主从复制及读写分离实际部署与验证

mysql实现主从复制/主从同步

MySQL主从复制以及读写分离(❤❤❤❤含理论和实验❤❤❤❤大家中秋快乐!㊗)