mysqlAB复制

mysqlAB复制

服务器环境:

rhel6.5 192.168.2.106      master

rhel6.5 192.168.2.108      slaver1

rhel6.5  192.168.2.107     slaver2

注: mysql 数据库的版本,两个数据库版本要相同,或者 slave 比 master 版本高!
在 master slave 上安装 mysql 软件,mysql 软件可以在 http://www.mysql.com 上下载,源码或是 rpm 包都可以,
由于 RHEL6 自带 mysql 软件包,直接 yum 安装。
# yum install mysql mysql-server -y
一。master server 配置
1)配置 /etc/my.cnf 配置文件
在[mysqld]下添加一下参数
log-bin=mysql-bin #启动二进制日志系统
binlog-do-db=test1 #二进制需要同步的数据库名,如果需要同步多个库,例如要再同步 test 库,再添加一行
“binlog-do-db=test2”,以此类推
server-id=1
#必须为 1 到 232–1 之间的一个正整数值
binlog-ignore-db=mysql   #禁止同步 mysql 数据库


2 ) 启动 master
# service mysqld start


3)创建同步帐户,并给予权限
mysql> GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO centrald@'192.168.2.108' IDENTIFIED BY 'centrald';

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)
调试:


(4)在108slaver机子上进行远程数据库登录
mysql -h 192.168.2.106 -ucentrald -pcentrald

登录成功,说明授予106slaver机的权限正确


(5)在 master 上用下面的命令查看
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 |      713 | test1        |                  |
+------------------+----------+--------------+------------------+

记录 File 和 Position 的值,下面会用到。
二。slave1server 配置


1 )配置 /etc/ my.cnf 文件
在[mysqld]下添加一下参数
server-id=2
# 从服务器 ID 号,不要和主 ID 相同,如果设置多个从服务器,每个从服务器必须有一个唯一的 server-id 值,必
须与主服务器的以及其它从服务器的不相同。可以认为 server-id 值类似于 IP 地址:这些 ID 值能唯一识别复制
服务器群集中的每个服务器实例。

log-bin=mysql-bin
binlog-do-db=test1 #允许的库
binlog-ignore-db=mysql

2 ) 启动 slave
# service mysqld start


3)登录mysql,创建test1数据库

因为在master里设置的是同步test1的数据,所以在slaver中要创建test1数据库

create database test1;

4)

change master  to master_host='192.168.2.106', master_user='centrald', master_password='centrald',master_log_file='mysql-bin.000005',master_log_pos=713;


Query OK, 0 rows affected (0.07 sec)

注意:此处的log_file,log_pos必须是master当前最新的数据


(5)启动slave

slave start;

(如果同步错误,可以使用slave stop先停止,然后再重新同步)


(6) show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.2.106
                  Master_User: centrald
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000005
          Read_Master_Log_Pos: 713
               Relay_Log_File: mysqld-relay-bin.000002
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000005
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
  如果这两行都是 yes,表示从库的 I/O,Slave_SQL 线程都正确开启.表明数据库正在同步

              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 713
              Relay_Log_Space: 407
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
1 row in set (0.00 sec)

(7)最后可以在master中的test1库创建表,检验slave机是否同步。

  三。slaver2server配置

mysqlAB复制mysqlAB复制

 

由于 master 上已经有数据,而新加的 slave2 没有,必须在配置复制前同步数据。
在slave1上进行操作(或者master

(1) mysqldump -pdesktop108 test1 > test1.bak

(2)scp test1.bak [email protected]:

(3)vim /etc/my.cnf  修改为如下

server-id=2

log-bin=mysql-bin
binlog-ignore-db=mysql
binlog-do-db=test1
log-slave-updates
(4)/etc/init.d/mysqld restart

(5)给slave2主机分配同步slave1的权限

mysql> GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO centrald@'192.168.2.107'IDENTIFIED BY 'centrald';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
(6)查看当前日志文件大小

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      595 | test1        | mysql            |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)


(1)vim /etc/my.cnf

server-id=3
log-bin=mysql-bin
binlog-do-db=test1 #允许的库
binlog-ignore-db=mysql
(2)/etc/init.d/mysqld start   启动数据库

(3)初始化root密码

mysqladmin -uroot -p password desktop107

(4)先建立数据库test1,然后将slave1中的数据导入

mysql -pdesktop107 test1 <test1.bak
(5)

mysql> change master to master_host='192.168.2.108', master_user='centrald',master_password='centrald', master_log_file='mysql-bin.000001', master_log_pos=595;
Query OK, 0 rows affected (0.08 sec)

(6)mysql> slave start;
Query OK, 0 rows affected (0.00 sec)
(7)mysql> show slave status\G;
(8)测试方法与前一种相同,在master上建立新的数据,看有没有同步。

  

/var/lib/mysql/下相关文件作用:
1. mysql-bin.index:服务器一旦开启二进制日志,会产生一个与二日志文件同名,但是以.index 结尾的文件。
它用于跟踪磁盘上存在哪些二进制日志文件。MySQL 用它来定位二进制日志文件。
2. mysqld-relay-bin.index:该文件的功能与 mysql-bin.index 类似,但是它是针对中继日志,而不是二进制日志。
3. master.info:保存 master 的相关信息。不要删除它,否则,slave 重启后不能连接 master。
4. relay-log.info:包含 slave 中当前二进制日志和中继日志的信息。


mysql常用命令:

(1)查看mysql二进制文件

mysqlbinlog mysql-bin.000004

(2)mysql_secure_installation   启动mysql安全配置向导


你可能感兴趣的:(linux,mysql,备份,同步,AB复制)