主从复制,读写分离原理
在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。
mysql读写分离配置(两台mysql版本一样的数据库)
主库配置:vi/etc/f//在mysql配置文件中添加如下语句
server-id=207#myql唯一标识一般用服务器ip最后的数
log-bin=mysql-bin#将mysql二进制日志取名为mysql-bin
binlog_format=mixed#二进制日志的格式,有三种:statement/row/mixed
#binlog_checksum=none#mysql5.6的binlog_checksum默认设置的是CRC32。5.5或者更早的版本没有这个变量binlog_checksum所以在版本不一致时候可以开启
binlog-do-db=database_name#设置同步的库如果有多个库可以复制该条改对应的库名就可以
重启mysql contost7.2重启MySQL语句:systemctlrestartmysql
登录数据库:mysql-uusername-p然后输入密码(输入密码是不会显示的哦!)
然后查看主库配置情况:showmasterstatus;
+------------------+----------+------------------------+------------------+-------------------+
|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|Executed_Gtid_Set|
+------------------+----------+------------------------+------------------+-------------------+
|mysql-bin.00001|120|database_name|||
+------------------+----------+------------------------+------------------+-------------------+
第一列日志文件名称第二列位置第三列同步的数据库名称
下边开始配置从库:
打开从库的f (windows打开my.ini)添加如下 和主库差不多 但是要求server-id要不一样log-bin=mysql-bin
server-id=2
binlog_format=mixed
登录从数据库 执行如下:changemasterto
master_host='11.11.11.111',#ip
master_user='username',#用户名
master_password='password',#密码
master_log_file='mysql-bin.000001',#主库的日志文件名称
master_log_pos=120;#主库的position的数值
startslave;#启动slave
showslavestatus;#查看状态主要看Slave_IO_Running与Slave_SQL_Runing如果都是Yes就可以
#如果有一个是No可以看后边的Last_IO_Error与Last_SQL_Error中的内容报什么错误。
下边就可以去主库测试了看看从库会不会同步
#主库执行SQL
CREATETABLEtest4
(
LastNamevarchar(30)
)
然后去看对应的从库中是否有对应的表!
好了 ,mysql的主从同步就搞定了!! 快去试试吧!