linux 主从同步

来源:互联网 发布:java lucene 内容搜索 编辑:程序博客网 时间:2024/06/16 07:16
一、安装准备



主数据库:172.16.10.200

从数据库:172.16.10.201

操作系统:CentOs 64位

服务器类型: 虚拟机


安装数据库

yum install -y mysql-server mysql mysql-devel

初始数据库

service mysqld start

检测是否为开机启动

chkconfig --list | grep mysqld

设置成开机启动

chkconfig mysqld on

关闭防火墙

service iptables stop



二、设置主库

1、修改主库my.cnf,主要是设置个不一样的id和logbin

[root@master mysql]# vi /etc/my.cnf

# 记住这部分一定要配置在[mysqld]后面,否则无法找到从节点,各个配置项的含义可自己查阅文档


[mysqld]
log-bin=mysql-bin
server-id=1
binlog-do-db=app_leolaurel //需要复制的数据库,如果没有本行,即表示复制所有的数据库
binlog-ignore-db=information_schema
binlog-ignore-db=mysql



server_id = 1

log_bin=mysql-bin

expire-logs-days=30binlog-do-db=yliyun

binlog-do-db=yliyun_log

binlog-ignore-db=test


2、启动主库生效

[root@localhost etc]service mysqld restart

如果是CentOS7,用这个命令:
systemctl restart mariadb

3、登陆主库

[root@localhost etc]mysql -u root -p


4、创建同步账号


grant replication slave on *.* to 'rep'@'192.168.0.22' identified by 'yliyun123';



mysql> grant replication slave on *.* to 'slave'@'172.16.10.201' identified by 'slave';



GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。



5、检查创建是否成功(不必须)

select user,host from mysql.user;



6、显示主库信息

记录File和Position,从库设置将会用到

mysql> show master status;

+------------------+----------+---------------+--------------------------+

| File             | Position | Binlog_Do_DB  | Binlog_Ignore_DB         |

+------------------+----------+---------------+--------------------------+

| mysql-bin.000001 |      245 |  | information_schema,mysql |

+------------------+----------+---------------+--------------------------+

1 row in set (0.00 sec)


# 说明,如果执行这个步骤始终为Empty set(0.00 sec),那说明前面的my.cnf没配置对。



三、设置从库

1、在201节点上修改从库my.cnf(位置一样)

[root@localhost etc]vi my.cnf
# 记住这部分一定要配置在[mysqld]后面,否则无法找到从节点,各个配置项的含义可自己查阅文档



[mysqld]
server-id=2
replicate-do-db=app_leolaurel
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
master-host=172.16.10.200
master-user=slave
master-password=slave
master-connect-retry=60



2,

change master to master_host='192.168.0.21', master_user='rep', master_password='yliyun123', master_log_file='mysql-bin.000026', master_log_pos=539641;


change master to master_host='192.168.145.222',
master_user='mysync',
master_password='q123456',
master_log_file='mysql-bin.000004',
master_log_pos=308; //注意mysql-bin.000004和308是第五步中的File和




3,开启从库
mysql> start slave;//启动从服务器复制功能


4,MySQL> show slave status;或者show slave status \G;






主服务器配置是对的
数据库账户root, 密码rootroot

#replicate-do-db=app_leolaurel
#replicate-ignore-db=mysql
#replicate-ignore-db=information_schema
#master-host=192.168.1.200
#master-user=root
#master-password=rootroot
#master-connect-retry=60


环境:
OS:CentOS release 5.5 (Final) (64位)

主从同步出现一下错误:

Slave_IO_Running: Connecting
Slave_SQL_Running: Yes

解决方法:

导致lave_IO_Running 为connecting 的原因主要有以下 3 个方面:


1、网络不通 ping下主服务器mysql
2、密码不对 验证密码
3、pos不对 这个可以不要考虑。

4、用于登录的主服务器mysql的用户不支持远程。 查看用户权限  
在安装完mysql数据库的时候默认他们的server-id=1 但是在做主从同步的时候需要将ID 号码设置不一样才行。

4.ID问题,

6,双方的机器防火墙是否策略有限制。

我敢肯定的并且排除的两个原因

1. 网络原因:在从库上拷贝主库上的备份文件的时候并没有出现任何的错误,因此可以排除。
2. POS 不对:这个我也可以排除,因为在主库上 show maste status 时我记录过了 POS,所以也将这个原因排除了。

很显然的问题是出现在 password 上面,只是我在从库上执行

CHANGE MASTER TO

MASTER_HOST='192.168.223.101',

MASTER_USER='xiaoyi',

MASTER_PASSWORD='xiaoyi',

MASTER_LOG_FILE='mysql-bin.000008',

MASTER_LOG_POS= 261;

的时候 MASTER_PASSWORD='xiaoyi', 中的 'xiaoyi' 写成了 'xiaoyi ',因此导致了从库上的Slave_IO_Running: Connecting。

修改过后再来查看从库的状态,问题已经解决



show slave status \G;
IO线程和sql线程都已经yes,但是还是同步不过去
原创粉丝点击