Mysql读写分离配置

KarlXu 2016-11-07 12:13:39原创浏览量2420

原理:简单的说就是主(master)服务器上执行过的操作会被保存在binlog日志里面,从(slave)服务器把他同步过来,然后重复执行一遍,那么它们就能一直同步。详细的可以自行百度或google.

首先准备2台服务器(已安装mysql):

主(master)服务器:192.168.1.1

从(slave)服务器:192.168.1.2

主库(master)配置:

(1) 启动,进入mysql  给从(slave)库创建新用户 账号为'user',密码为'p123456',允许访问的ip为’192.168.1.*‘;

mysql > grant replication slave on *.* to 'user'@'192.168.1.*' identified by 'p123456';  

(2)清空日志信息

mysql > show binary logs;//显示日志

mysql > reset master; //清空

从库(slave)配置:

(1)修改mysql配置文件的服务器:service-id  //此id为唯一 不可与主库(master)重复,以后若从库(slave)增加也不可重复

# vim  /etc/my.cnf

修改 service-id = 2 

(2)启动,进入mysql 清空日志信息,跟主库(master)一样

(3)启用复制  让从库(slave)连接master并开始重做主库(master)二进制日志中的事件

mysql > change master to master_host='192.168.1.1',master_user='user',master_password='p123456',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=0;

// master_host 主库(master)ip

// master_user / master_password刚才创建的user和密码

// master_port端口

// master_log_file 日志文件   如果master日志没有被清空,这里就是当前master的日志信息

// master_log_pos 日志文件开始的位置   

需要注意的是,默认情况下,会同步该用户下所有的DB,如果想限定哪些DB,有3种思路
1.在主库(master)上的修改配置文件/etc/my.inf中通过参数binlog-do-db、binlog-ignore-db设置需要同步的数据库。
2.在执行grant分配权限操作的时候,限定数据库
3.在slave上限定数据库使用replicate-do-db=dbname

(4)开启slave

mysql > start slave;

(5)确认Slave是否和Mater成功通信。在现实的信息中如果 Slave_IO_Running和Slave_SQL_Running都是yes,则证明配置成功

mysq > show slave stutas\G;

END!!!


有问题请Email联系: karlxu0424@gmail.com