下面的教程旨在为您提供一个简单的一步一步的指导,在RHEL 6.3 / 6.2 / 6.1 / 6 / 5.8将MySQL设置( 主从 ) 复制 ,CentOS的6.3 / 6.2 / 6.1 / 6 / 5.8和Fedora 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的复制是非常有用的数据安全性 , 故障转移解决方案 , 从从数据库备份 , 分析等方面 我们使用以下内容来承载复制过程。 在你的情况下,它会不同。
- 工作Linux操作系统像CentOS的6.3 , 红帽6.3或Fedora的17
- 主机和从机的CentOS 6.3 Linux服务器。
- 主机IP地址为:192.168.1.1。
- 从IP地址:192.168.1.2。
- 主机和从机在同一局域网网络。
- Master和Slave安装的MySQL版本。
- 主允许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的复制指南 。