MySql主服务器: 系统:CentOS 6.7(192.168.171.51) 主机名:balichvm.org MySQL版本:5.6.26 MySql从服务器: 系统:CentOS 6.7(192.168.171.50) 主机名:balichos.org MySQL版本:5.6.26
配置主从前的准备:
1)、关闭selinux
vim /etc/sysconfig/selinux
#SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加
保存配置文件 ,然后重启系统,或者临时关闭:
setenforce 0
2)、配置iptables,开启mysql默认的3306端口
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp--dport 3306 -j ACCEPT
然后重启服务,使之生效。
/etc/init.d/iptables restart
配置主从步骤:
(1)分别把需要同步的数据库导入到主数据库(balichvm.org)和从数据库(balichos.org),因为做主从需要主从数据库的实例相同。这里是mbbalichdb。
主数据库:
mysql -u root –p #进入数据库的控制台 CREATE DATABASE mbalichdb; #创建mbalichdb数据库 use mbalichdb; #进入数据库 source /root/mbalich.sql #还原数据库(导入备份文件到数据库)
从数据库:
mysql -u root –p #进入数据库的控制台 CREATE DATABASE mbalichdb; #创建mbalichdb数据库 use mbalichdb; #进入数据库 source /root/mbalich.sql #还原数据库(导入备份文件到数据库)
(2)分别在主数据库和从数据库上修改配置文件
主数据库:
vim /usr/local/mysql/my.cnf
server_id=1 #需要唯一,要小于从数据库;如果有就不需要添加了 log-bin=mysql-bin #开启mysql二进制日志系统 binlog-do-db=mbalichdb #需要同步的数据库 binlog-ignore-db=mysql #不需要同步的数据库
保存配置文件,退出。然后重启mysql服务
/etc/init.d/mysqld restart
重新登录到主Mysql控制台,为从数据库建立一个主从复制的帐号。
grant replication slave on *.* to'repl'@'192.168.171.50' identified by 'replbak.';
同时执行如下操作:
mysql> flush tables with read lock; #锁住表,只可以读 Query OK, 0 rows affected (0.61 sec) mysql> show master status; #查看当前的状态,前两列需要用到 +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB |Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 331 | mbalichdb | mysql | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.06 sec)
从数据库:
vim /usr/local/mysql/my.cnf
server-id=2 #需要唯一, log-bin=mysql-bin #开启mysql二进制日志系统 replicate-do-db=mbalichdb #需要同步的数据库 replicate-ignore-db=mysql #不需要同步的数据库
保存配置文件,退出。然后重启mysql服务
/etc/init.d/mysqld restart
(3)在从服务器上配置主从同步
重启mysql服务后,再次进入mysql控制台,执行mysql主从同步。
mysql -u root –p #进入mysql控制台
stop slave; #停止主从同步 mysql> change master to master_host='192.168.171.51', master_user='repl', master_password='replbak.', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=331;
上面的一条语句是主从同步的。
start slave; #开启主从同步
查看主从同步情况
mysql> show slave status\G; *************************** 1. row*************************** Slave_IO_State: Connecting tomaster Master_Host: 192.168.171.51 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 331 Relay_Log_File:balichOS-relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: mbalichdb Replicate_Ignore_DB: mysql 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: 331 Relay_Log_Space: 120 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: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 1045 Last_IO_Error: error connectingto master '[email protected]:3306' - retry-time: 60 retries: 2 Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 0 Master_UUID: Master_Info_File: /data/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for theslave I/O thread to update it Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: 151110 04:51:06 Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 1 row in set (0.00 sec)
注意查看:Slave_IO_Running: Yes和Slave_SQL_Running: Yes,两个都是yes。
(4)测试主从同步
主数据库:
unlock tables; #表解锁 mysql> use mbalichdb ; #切换数据库 Database changed mysql> show tables; #查看当前数据库的表 +-----------------------+ | Tables_in_mbalichdb | +-----------------------+ | wp_commentmeta | | wp_comments | | wp_links | | wp_options | | wp_postmeta | | wp_posts | | wp_term_relationships | | wp_term_taxonomy | | wp_terms | | wp_usermeta | | wp_users | +-----------------------+ 11 rows in set (0.03 sec) mysql> mysql> create table wp_33(id int notnull primary key, name char(20)); #创建一张表。
从数据库:
mysql -u root –p #登录到控制台 mysql> use mbalichdb; #进入mbalichdb数据库 mysql> show tables; +-----------------------+ | Tables_in_mbalichdb | +-----------------------+ | wp_33 | | wp_commentmeta | | wp_comments | | wp_links | | wp_options | | wp_postmeta | | wp_posts | | wp_term_relationships | | wp_term_taxonomy | | wp_terms | | wp_usermeta | | wp_users | +-----------------------+ 12 rows in set (0.00 sec)
在从数据库上有我们刚刚创建的wp_33表,说明可以同步了。