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 #增加
保存配置文件 :wq,然后重启系统,或者临时关闭: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 �Cp #进入数据库的控制台
CREATE DATABASE mbalichdb; #创建mbalichdb数据库
use mbalichdb; #进入数据库
source /root/mbalich.sql #还原数据库(导入备份文件到数据库)
从数据库:
mysql -u root �Cp #进入数据库的控制台
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 �Cp #进入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 �Cp #登录到控制台
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表,说明可以同步了。