mysql主从复制和读写分离的配置详细笔记

1.先修改my.cnf

sudo vim /etc/my.cnf

找到server_id 修改为10以内的数字,

同样的做法在从服务器上面,但是数字不能重复,保存后重启;

2.进入主服务器的mysql,

//授权给从数据库服务器192.168.1.152

GRANT REPLICATION SLAVE ON *.* to 'guofu'@'192.168.1.152' identified by 'guofu';

//查看主库的状态

show master status;

退出;

查询结果如下图:

3.在从服务器进入mysql

如果之前配过从服务器,则先执行以下语句结束同步;

stop slave;

然后配置同步信息

change master to 

master_host='192.168.1.133',

 master_user='guofu',

 master_password='guofu', 

master_log_file='mysql-bin.000008',//对应主表的file

 master_log_pos=1159;//对应主表的position

开启同步

start slave;

查看同步状态 

show slave status \G;

两个同时为yes的时候表示成功,

这个时候我们在主服务器执行:

create database guofu 

在从服务器可以看到;

表示已经成功

注意:如果不成功,显示connecting  考虑是否是防火墙的问题,关闭防火墙


如果单独向同步某个库,参考以下文章

mysql主从只同步部分库或表 - CSDN博客


查看bin-log日志

A.查询第一个(最早)的binlog日志:

        mysql> show binlog events\G;


      B.指定查询mysql-bin.000021 这个文件:

        mysql> show binlog events in 'mysql-bin.000021'\G;

      C.指定查询mysql-bin.000021 这个文件,从pos点:8224开始查起:

        mysql> show binlog events in 'mysql-bin.000021' from 8224\G;

      D.指定查询mysql-bin.000021 这个文件,从pos点:8224开始查起,查询10条

        mysql> show binlog events in 'mysql-bin.000021' from 8224 limit 10\G;

      E.指定查询mysql-bin.000021 这个文件,从pos点:8224开始查起,偏移2行,查询10条

        mysql> show binlog events in 'mysql-bin.000021' from 8224 limit 2,10\G;

MySQL的binlog日志 - 马丁传奇 - 博客园


那么如何实现读写分类呢?

①面向过程  使用两个mysql的链接,读操作连接从mysql  写操作连接主mysql

②面向对象  class类封装mysql  query方法执行sql  判断sql语句的字符串里包含的关键字,如果包含select 查询操作,就连接从mysql 其他操作就连接主mysql

3.mysql_proxy 可以根据用户的操作,判断是读写操作,来进行对应服务器的操作。

相当于mysql的负载均衡。直接连接mysql_proxy。

Amoeba+Mysql实现数据库读写分离 - 青衫lys - 博客园------------------注意:该文章坑点在于:默认的数据池是不能关闭的,否则不能执行任何操作

下载Amoeba

wget http://jaist.dl.sourceforge.net/project/amoeba/Amoeba%20for%20mysql/3.x/amoeba-mysql-3.0.5-RC-distribution.zip


另附二进制目录:在mysql下执行   show variables like '%datadir%';即可看到数据文件目录

如何查看二进制文件:使用以下命令 注意目录改成自己的

/usr/local/mysql/bin/mysqlbinlog mysql-bin.000008

以下是个人笔记

可以在my.cnf中设置

relay_log_recovery        = on


msyql 同步复制还半同步复制文章链接

mysql异步复制与半同步复制的架构原理 - CSDN博客

2.9 sync_relay_log_info:这个参数和sync_relay_log参数一样,当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay-log.info里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成磁盘的大量I/O。当设置为0时,并不是马上就刷入relay-log.info里,而是由操作系统决定何时来写入,虽然安全性降低了,但减少了大量的磁盘I/O操作。这个值默认是0,可动态修改,建议采用默认值。

你可能感兴趣的:(mysql主从复制和读写分离的配置详细笔记)