前面两篇文章分别介绍了

  1. centos6下 mysql5.5的安装
  2. centos6下 mysql 5.5 数据目录迁移

下面这篇文章将在前面两篇文章的基础上,介绍一下 mysql主从复制的操作步骤,准备工作请现在两台机器上按照前面两篇文章介绍的那样安装mysql。

下面介绍主从复制的操作步骤:

(1)修改主mysql 配置文件 /etc/my.cnf


server-id = 71  //服务器id,最好是ip最后一段
log-bin=mysql-bin //必须启用binlog日志
relay_log = mysql-relay-bin //如果此mysql作为另一个数据库的从库,则需要启动relaylog
log_slave_updates = 1  //如果此mysql作为另一个数据库的从库,即处于复制的中间流程,比如A→B→C,B必须设置此项
read_only = 0  //显示设置可写,并不要求只读。

(2)修改从库的配置文件


server-id = 72 //服务器id,最好是ip最后一段
log-bin=mysql-bin //从库不是必须启用binlog日志
relay_log = mysql-relay-bin //如果此mysql作为另一个数据库的从库,则需要启动relaylog
log_slave_updates = 1 //如果此mysql作为另一个数据库的从库,即处于复制的中间流程,比如A→B→C,B必须设置此项
read_only = 0 //显示设置可写,并不要求只读。

我们这里为了安全起见,把上面提到的五项都配置。如果觉得log日志会过多的话,可以设置

expire_logs_days = 7

,即自动删除7天前的binlog。

(3)重启两台mysql。

(4)登陆主mysql,为从库授予一个复制账户。先使用命令

mysql -uroot -p 

登陆主mysql,然后执行命令


grant replication slave on *.* to 'repl'@'ip' identified by 'password';  //ip请换成具体从库ip,或者使用%来表示所有地址,password即repl这个账户的密码,请更换为实际密码

FLUSH PRIVILEGES;

如图:

repl

 

(5)登陆主库,执行命令

show master status;

,然后请不要再操作主库,截图如下:

masterstatus

 

截图中的file和position请记住,下一步要使用。

(6)登陆从库,执行命令


stop slave;  //停止同步

change master to master_host='ip',master_user='repl',master_password='password',master_log_file='mysql-bin.000005',master_log_pos=336;   //ip请换成主mysql的实际ip,password请更换成第4步骤,设置的repl密码,file和pos是第五步截图里的值。

start slave;  //开始同步

具体如图:

changemaster

(7)检查从库复制情况,执行命令

show slave status\G;

,具体如下:

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: ip    //主mysql的ip
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000005
Read_Master_Log_Pos: 336
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000005
Slave_IO_Running: Yes   //从库同步的IO线程是否正常
Slave_SQL_Running: Yes //从库执行的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: 336
Relay_Log_Space: 409
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:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 71 //主库的服务器id,在/etc/my.cnf配置的那个server-id
1 row in set (0.00 sec)

主要就是上面那两个Yes,Slave_IO及Slave_SQL进程必须正常运行,即必须都是YES状态,否则有一个出现NO就是错误的状态。

(8)以上已经完成mysql主从数据库的配置,在我们的配置中,没有具体制定复制哪个数据库,故会复制所有的数据库,即从336那个位置开始,从库会复制所有主库的sql操作。

(9) 简单验证一下主从复制是否正确

在主库执行如下sql,新建一个hello数据库,新建一个hi表,插入一条数据。


mysql> create database hello;
Query OK, 1 row affected (0.01 sec)

mysql> use hello;
Database changed
mysql> create table hi(id int(3),name char(10));
Query OK, 0 rows affected (0.03 sec)

mysql> insert into hi values(001,'xiaomager');
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hello |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.01 sec)

mysql>

然后登陆从库mysql,查看这个新建的数据库和新建的表已经数据是否已经同步了。


mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hello |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.01 sec)

mysql> use hello;
Database changed
mysql> show tables;
+-----------------+
| Tables_in_hello |
+-----------------+
| hi |
+-----------------+
1 row in set (0.00 sec)

mysql> select * from hi;
+------+-----------+
| id | name |
+------+-----------+
| 1 | xiaomager |
+------+-----------+
1 row in set (0.01 sec)

mysql>

(10)以上就完成了mysql数据库的主从复制过程。

 

 

 

记录一次线上mysql主从数据库的迁移(数据量为亿级别)

前一阵迁移了线上服务器上的mysql的数据,数据量达到了亿级别。特在此记录一下操作流程。 现状: 目前线上使用了mysql主从库,即主库A和从库B,由于当初在安...

阅读全文

mysql主从复制 show slave status\G; 内容详解

在mysql主从复制的环境中,查看从库复制的情况,要使用 show slave status\G; 由于这个语句会显示出很多信息,这里对这些内容记录一下,做一个详解,下面是一...

阅读全文

centos6下 mysql 5.5 数据目录迁移

前一篇文章 http://www.xiaomager.com/651.html 介绍了centos6下 mysql 5.5的安装过程。 当启动后,可以使用命令 ps -ef|grep mysql 看来mysql的进程情况,如...

阅读全文

欢迎留言