下图就描述了一个多个数据库间主从复制与读写分离的模型(来源网络):mysql
用途及条件 sql
原理数据库
mysql主从复制原理服务器
从库生成两个线程,一个I/O线程,一个SQL线程;网络
参数解释:spa
log-bin=mysql-bin //将mysql二进制日志取名为mysql-bin线程
binlog_format=mixed //二进制日志的格式,有三种:statement/row/mixed,具体分别很少作解释,这里使用mixed3d
server-id=101 //为服务器设置一个独一无二的id便于区分,这里使用ip地址的最后一位充当server-id rest
配置完成,:wq 保存,重启mysql日志
重启mysql命令:# service mysqld restart
一样的,进入从服务器,配置从服务器的my.cnf,重复步骤1便可,
惟一的区别是,server-id要改为从服务器的ip尾位,即server-id=105;其余两项是同样的,保存,并重启mySQL;
注:mysql的配置文件路径查询方式:
一、Windows下MySQL的配置文件是my.ini,通常会在安装目录的根目录。
二、Linux下MySQL的配置文件是my.cnf,通常会放在/etc/my.cnf,/etc/mysql/my.cnf。若是找不到,能够用find命令查找。
三、Linux用rpm包安装的MySQL是不会安装/etc/my.cnf文件的
查询配置文件路径方式:
2.在主服务器上为从服务器分配一个帐号,就像一把钥匙,从服务器拿着这个钥匙,才能到主服务器上来共享主服务器的日志文件。
进入主服务器的mysql界面,
命令: # mysql -u root -p 111111 //我这里mysql帐号是root,密码是111111
在mysql操做界面下,输入下面一行命令:
GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '111111';
3.查看主服务器BIN日志的信息(执行完以后记录下这两值,而后在配置完从服务器以前不要对主服务器进行任何操做,由于每次操做数据库时这两值会发生改变).
4.设置从服务器
进入从服务器mysql
命令: # mysql -u root -p111111
关闭slave(若是你之前配置过主从的话,必定要先关闭)
命令:stop slave;
开始配置:
输入下面代码便可:
参数解释:MASTER_HOST : 设置要链接的主服务器的ip地址
MASTER_USER : 设置要链接的主服务器的用户名
MASTER_PASSWORD : 设置要链接的主服务器的密码
MASTER_LOG_FILE : 设置要链接的主服务器的bin日志的日志名称,即第3步获得的信息
MASTER_LOG_POS : 设置要链接的主服务器的bin日志的记录位置,即第3步获得的信息,(这里注意,最后一项不须要加引号。不然配置失败)
先在从服务器配置完成,启动从服务器:
命令: start slave;
5.查看是否配置成功:
命令: show slave status;
上面两项均为yes,说明配置成功
master开启二进制日志后默认记录全部库全部表的操做,能够经过配置来指定只记录指定的数据库甚至指定的表的操做,具体在mysql配置文件的[mysqld]可添加修改以下选项:
# 不一样步哪些数据库 binlog-ignore-db = mysql binlog-ignore-db = test binlog-ignore-db = information_schema # 只同步哪些数据库,除此以外,其余不一样步 binlog-do-db = game