您的位置:首页 > 数据库 > MySQL

mysql主备库数据同步搭建

2016-02-29 10:43 567 查看
mysql版本5.5

服务器IP1      192.168.1.1   master 主库

服务器IP2      192.168.1.2   slave备库

1.修改主库 master   /etc/my.cnf    

对于部分mysql可能没有这个文件,我从官方下的就没有,找到安装目录下,任意*.cnf拷贝到/etc目录下即可

# vi /etc/my.cnf

[mysqld]

#datadir=/var/lib/mysql

#socket=/var/lib/mysql/mysql.sock

user=mysql

symbolic-links=0

server-id=200  #使用ip端末尾为就好了  比如192.168.1.1 id就是1

log-bin=mysql-bin

relay-log=relay-bin

relay-log-index=relay-bin-index

注意修改必须放在[mysqld]标签下,保存后重启mysql服务

# service  mysql restart

2.修改备库

slave /etc/my.cnf
#datadir=/var/lib/mysql

#socket=/var/lib/mysql/mysql.sock

user=mysql

symbolic-links=0

server-id=132

log-bin=mysql-bin

replicate-do-db=test   #test为要同步数据库名字,多个就加多条

log-slave-updates=1

重启mysql服务

# service  mysql restart

3.登录Slave mysql,然后执行下面命令:

mysql> stop slave;

mysql> change master to master_host='192.168.1.1',master_user='root',master_password='123456';

mysql> start slave;

mysql> show slave status\G;

查看这两项是否为YES,yes为正常。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

4.同步前,我是手动把两边数据同步一遍,可用mysqldump 导入 然后远程copy 再导入,就是在主备库开始同步之前,手动先将两边数据同步一下,空库可略过。。

5.对于 Slave_IO_Running 显示Connection ,检查网络、用户名密码、和mysql执行权限,可以在备库服务器上远程mysql 首先排除网,用户密码和账号的远程登录权限问题。

一开始我是出现 Slave_IO_Running 显示Connection,自作聪明 my.cnf 用户写了root,这就导致了root可能对mysql目录文件没有读写权限

4000

使用chown+了权限后,修改了root,mysql,和自己新建的用户,始终显示conn,于是在备库服务器上用mysql -h 链接主库,发现用户没有加远程登录权限,切回主库添加权限后,last_error出现日志不一致问题,网上说删除bin-index,00001等等,并没有卵用

最后看到一篇
http://niutuku.com/tech/Mysql/237830.shtml
service_id 问题  进mysql查了一下,还真是不一致,我在排错过程中修改了server-id

登录mysql 

show variables like 'server_id'; 

分别看一下主备库的id与my.cnf设置的是否一致,如果不一致

set global server_id=2; #此处的数值和my.cnf里设置的一样就行 

再看备库

mysql>
stop slave;
mysql> change master to master_host='192.168.1.1',master_user='root',master_password='123456';
mysql> start slave;
mysql> show slave status\G;

本以为事情到此结束了,回去发现一个数据库打不开,网上查了一下是数据库文件权限问题

chown
-R mysql:mysql /var/lib/mysql/gps/

重启mysql,搞定
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: