php mysql读写分离主从复制_mysql主从复制 读写分离原理及实现

主从复制,读写分离原理

在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。

mysql读写分离配置(两台mysql版本一样的数据库)

主库配置:vi /etc/my.cnf   //在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语句:systemctl restart mysql

登录数据库:mysql -u username -p  然后输入密码 (输入密码是不会显示的哦!)

然后查看主库配置情况:show master status;

+------------------+----------+------------------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB           | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+------------------------+------------------+-------------------+

| mysql-bin.00001  |      120 | database_name          |                  |                   |

+------------------+----------+------------------------+------------------+-------------------+

第一列 日志文件名称  第二列位置  第三列同步的数据库名称

下边开始配置从库:

打开从库的mysql.cnf (windows打开my.ini)添加如下 和主库差不多 但是要求server-id要不一样log-bin=mysql-bin

server-id=2

binlog_format=mixed

登录从数据库 执行如下:change master to

master_host='11.11.11.111',  #ip

master_user='username',   #用户名

master_password='password', #密码

master_log_file='mysql-bin.000001',  #主库的日志文件名称

master_log_pos=120;  #主库的position的数值

start slave;  #启动slave

show slave status;  #查看状态  主要看Slave_IO_Running  与 Slave_SQL_Runing  如果都是Yes就可以

#如果有一个是No可以 看后边的Last_IO_Error  与 Last_SQL_Error中的内容 报什么错误。

下边就可以去主库测试了 看看 从库会不会同步

#主库执行SQL

CREATE TABLE test4

(

LastName varchar(30)

)

然后去看对应的从库中是否有对应的表!

好了 ,mysql的主从同步就搞定了!!  快去试试吧!

你可能感兴趣的:(php,mysql读写分离主从复制)