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,可动态修改,建议采用默认值。