CentOS6中mysql主从复制配置(注:mysql是通过yum源安装的)
mysql复制的优点主要包括以下3个方面:
1.如果主服务器出现问题,可以快速切换到从服务器提供的服务
2.可以在从服务器上执行查询操作,降低主服务器的访问压力
3.可以在从服务器上执行备份,以避免备份期间影响主服务器的服务
注意:一般只有更新不频繁的数据或者对实时性要求不高的数据可以通过从服务器查询,实时性要求高的数据仍然需要从主服务器获得
主服务器配置
我的服务器采用yum安装,如果想配置文件
设置默认编码等一些初始参数(my.cnf)(若无my.cnf, 则可cp /usr/share/mysql/my-small.cnf /etc/my.cnf)
前期准备数据:
两台服务器
master:192.168.1.111(主服务器)
slave:192.168.1.112(从服务器)
网络互通(关闭防火墙,关闭selinux)具体方法请看链接
一、主从服务器分别作以下操作
1.1、版本一致
1.2、初始化表,并在后台启动mysql
1.3、修改root的密码(新安装的mysql没有密码)
二、mysql主服务器配置master(192.168.1.111)
1)修改主服务器master:
代码如下 | |
#vi /etc/my.cnf [mysqld] log-bin = mysql-bin#[必须]启用二进制日志 server-id= 1 #[必须]服务器唯一ID,默认是1 expire-logs-days = 7 #只保留7天的二进制日志,以防磁盘被日志占满 replicate-do-db= test #需要做复制的数据库名 binlog-ignore-db = mysql #不备份的数据库 binlog-ignore-db = information_schema |
2)给从服务器设置授权用户(创建复制帐号)
代码如下 | |
|
建立一个帐户mysync,并且只能允许从192.168.1.112这个地址上来登陆,密码是123456。
(如果因为mysql版本新旧密码算法不同,可以设置:set password for ‘mysync’@’192.168.1.112′=old_password(’123456′))
3)在主服务器上设置读取锁定有效,确保没有数据库操作,以便获得一个一致性的快照
代码如下 | |
mysql> flush tables with read lock; |
4)查看主服务器上当前的二进制日志名和偏移量值
代码如下 | |
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 |106 | || +------------------+----------+--------------+------------------+ |
5)目前主数据库服务器已经停止了更新操作,生成主数据库的备份,备份的方式有两种:
(1)cp全部的数据
如果主数据库的服务可以停止,那么直接cp数据文件应该最快的生成快照的方法:
(2)mysqldump备份数据方法
代码如下 | |
[root@localhost ~]# /usr/bin/mysqldump -uroot -p123456 test -l -F >/tmp/test.sql |
6)主数据库备份完毕后,主数据库可以恢复写操作,剩下的操作只需要在从服务器上去执行:
mysql> unlock tables;
7)把主数据库的一致性备份恢复到从数据库上,把以上的压缩包解压到相应的目录即可
三、mysql从服务器配置slave(192.168.1.112)
1)修改从服务器slave:
代码如下 | |
#vi /etc/my.cnf [mysqld] log-bin = mysql-bin#[必须]启用二进制日志 server-id = 2 #[必须]服务器唯一ID,默认是1 replicate-do-db = test #需要做复制的数据库名 replicate-ignore-table = information_schema #自动跳过的表 binlog-ignore-db = mysql #不备份的数据库 read_only = 1 #只读属性 |
2)将主库上备份的数据库恢复到从库(导入之前备份数据)
代码如下 | |
mysql> mysql -uroot -p123456 test -v -f </tmp/test.sql |
-v查看导入的详细信息
-f是当中间遇到错误时,可以skip过去,继续执行下面的语句
3)重启从库MYSQL
代码如下 | |
service mysqld restart |
4)登录从库的MySQL命令行,执行:
代码如下 | |
mysql> change master to master_host='192.168.1.111',master_user='mysync',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=106; |
5)启动从库连接,执行:
代码如下 | |
mysql> start slave; #启动从库连接 |
6)查看从库状态:
代码如下 | |
mysql> show slave statusG; #查看连接情况 Slave_IO_Running: Yes Slave_SQL_Running: Yes |
如果有出现以上结果,则配置成功