主从复制,读写分离原理
在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。
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的主从同步就搞定了!! 快去试试吧!