如何在RHEL,CentOS,Fedora中设置MySQL(主从)复制

下面的教程旨在为您提供一个简单的一步一步的指导,在RHEL 6.3 / 6.2 / 6.1 / 6 / 5.8MySQL设置( 主从复制 ,CentOS的6.3 / 6.2 / 6.1 / 6 / 5.8Fedora 17 ,16,15,14,13,12采用最新的MySQL版本。 本指南是专门针对CentOS 6.3操作系统编写的,但也与MySQL 5.x的旧版本的Linux发行的工作。

更新:如果你正在寻找下的CentOS / RHEL 7和Debian 8 MariaDB的主从复制和它的衍生物,如Ubuntu的,按照本指南安装MariaDB的主从复制

RedHat / CentOS / Fedora中的MySQL主从复制

MySQL复制是非常有用的数据安全性故障转移解决方案从从数据库备份分析等方面 我们使用以下内容来承载复制过程。 在你的情况下,它会不同。

  1. 工作Linux操作系统CentOS的6.3红帽6.3Fedora的17
  2. 主机和从机的CentOS 6.3 Linux服务器。
  3. 主机IP地址为:192.168.1.1。
  4. 从IP地址:192.168.1.2。
  5. 主机和从机在同一局域网网络。
  6. Master和Slave安装的MySQL版本。
  7. 主允许3306端口远程MySQL连接

我们有两个服务器,一个是IP(192.168.1.1)和其他的Minion(192.168.1.2)。 我们划分了安装过程分为两个阶段,使你的东西更容易, 在第一阶段我们将配置服务器,并在第二阶段服务器。 让我们开始复制设置过程。

阶段I:配置主服务器(192.168.1.1)进行复制

在第一阶段 ,我们将看到MySQL的安装,设置复制 ,然后验证复制。

在主服务器中安装MySQL

首先,请继续使用MySQL安装YUM命令 如果您已经安装了MySQL,则可以跳过此步骤。

# yum install mysql-server mysql
在主服务器中配置MySQL

第VI编辑器中打开的my.cnf配置文件。

# vi /etc/my.cnf

添加下面的条目下的[mysqld]部分,不要忘记,以取代数据库名称youcl,你想复制的Minion

server-id = 1
binlog-do-db=youcl
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin

重新启动MySQL服务。

# /etc/init.d/mysqld restart

登录到MySQL root用户身份并创建从用户和授予权限进行复制。 与用户和your_password与密码替换slave_user。

# mysql -u root -p
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'your_password';
mysql> FLUSH PRIVILEGES;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 11128001 | youcl		 |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> quit;

请记下文件( 的mysql-bin.000003)及位置(11128001)号,我们这些数字以后需要服务器上。 下一步申请读锁到数据库导出所有使用mysqldump命令的数据库和主数据库中的信息。

#  mysqldump -u root -p --all-databases --master-data > /root/dbdump.db

一旦你转储所有的数据库,现在再次连接到mysql作为root用户和unlcok表。

mysql> UNLOCK TABLES;
mysql> quit;

上传使用SCP命令服务器(192.168.1.2)上的数据库转储文件。

scp /root/dbdump.db root@192.168.1.2:/root/

就这样,我们已经成功配置了服务器,让我们进入第二阶段的部分。

阶段II:配置从服务器(192.168.1.2)进行复制

第二阶段 ,我们做的MySQL的安装,设置复制 ,然后验证复制。

在从服务器中安装MySQL

如果您尚未安装的MySQL,然后使用YUM命令来安装它。

# yum install mysql-server mysql
在从服务器中配置MySQL

第VI编辑器中打开的my.cnf配置文件。

# vi /etc/my.cnf

添加下面的条目下的[mysqld]部分,不要忘了更换服务器,youcl与数据库名称等的IP地址,你想与大师进行复制。

server-id = 2
master-host=192.168.1.1
master-connect-retry=60
master-user=slave_user
master-password=yourpassword
replicate-do-db=youcl
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin

现在导入我们在早期命令中导出的转储文件,并重新启动MySQL服务。

# mysql -u root -p < /root/dbdump.db
# /etc/init.d/mysqld restart

登录到MySQL root用户身份,并停止Minion 然后告诉Minion到哪里寻找主日志文件 ,我们已经写在主用SHOW MASTER STATUS; 命令文件( 的mysql-bin.000003)及位置(11128001)号。 您必须更改192.168.1.1主服务器IP地址,并相应地更改用户名密码

# mysql -u root -p
mysql> slave stop;
mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.1', MASTER_USER='slave_user', MASTER_PASSWORD='yourpassword', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=11128001;
mysql> slave start;
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.1
Master_User: slave_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 12345100
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 11381900
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: youcl
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: 12345100
Relay_Log_Space: 11382055
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)

在主服务器和从服务器上验证MySQL复制

真的很重要的是知道复制是完美的。 服务器创建表,并在其中插入一些值。

在主服务器上
mysql> create database youcl;
mysql> use youcl;
mysql> CREATE TABLE employee (c int);
mysql> INSERT INTO employee (c) VALUES (1);
mysql> SELECT * FROM employee;
+------+
|  c  |
+------+
|  1  |
+------+
1 row in set (0.00 sec)
从服务器上

验证Minion ,运行相同的命令,它会从返回相同的值了。

mysql> use youcl;
mysql> SELECT * FROM employee;
+------+
|  c  |
+------+
|  1  |
+------+
1 row in set (0.00 sec)

就这样,终于你已经在几个简单的步骤设置MySQL复制 更多信息可以在这里找到MySQL的复制指南

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏