MySQL主從配置

配置主從準備工做mysql

安裝兩臺mysql,並啓動sql

在主上建立測試庫數據庫

# mysql -uroot -S /tmp/mysql.sock -e "create database db1;"vim

而後導出主的 mysql 庫數據而後導入給 db1centos

# mysqldump -uroot -S /tmp/mysql.sock mysql > 123.sqlide

# mysql -uroot -S /tmp/mysql.sock db1 < 123.sql測試

配置主(master)centos7

[root@wjh5 ~]# vim /etc/my.cnfspa

#打開主的配置文件#rest

修改或添加:

server-id=1

#這個數值不能和從同樣#

log-bin=wjh

#把這行註釋打開,名字能夠自定義#

兩個可選參數(2 選 1):

binlog-do-db=db1,db2 #用來指定須要同步的庫

binlog-ignore-db=db1,db2 #指定忽略不一樣步的庫

修改配置文件後,重啓 mysql

[root@wjh5 ~]# service mysqld restart

[root@wjh5 ~]# ls /data/mysql

db1 ib_logfile1 mysql-bin.000002 test wjh5.pid

ibdata1 mysql mysql-bin.000003 wjh.000001 wjh.index

ib_logfile0 mysql-bin.000001 mysql-bin.index wjh5.err

# wjh.000001 wjh.index這個就是產生的bin-log文件.#

受權給從一個用來同步數據的用戶 cong

[root@wjh5 ~]# mysql -S /tmp/mysql.sock

#登錄主#

mysql> grant replication slave on *.* to 'cong'@'127.0.0.1' identified by '123123';

#受權一個用戶是cong,登錄密碼是123123,權限是replication的用戶#

//這裏的repl是爲slave端設置的訪問master端mysql數據的用戶,密碼爲123123,

這裏的127.0.0.1爲slave的ip(由於配置的master和slave都在本機)

mysql> flush privileges;

#刷新權限,否則不生效,不用重啓數據庫服務#

mysql> flush tables with read lock;

#把表的讀權限鎖死,鎖定數據庫,此時不容許更改任何數據

mysql> show master status;

查看狀態,這些數據是要記錄的,一會要在slave端用到

配置從(slave)

[root@wjh5 ~]# vim /usr/local/mysql_2/my.cnf

#打開從的配置文件#

修改或添加:

server-id=2

#這個數值不能和主同樣#

兩個可選參數(2 選 1):

replicate-do-db=db1,db2 #用來指定須要同步的庫

replicate-ignore-db=db1,db2 #指定忽略不一樣步的庫

#意義同主的那兩個可選參數,若是主已經定義過了,那麼從上就不用再次加這些參數了.#

[root@wjh5 ~]# service mysqld2 restart #重啓從服務#

拷貝主的 db1 庫數據到從(要實現同步必須主和從數據庫一致)

[root@wjh5 mysql_2]# mysql -uroot -S /tmp/mysql2.sock -e "create database db1";

#在從上建立數據庫db1#

[root@wjh5 mysql_2]# ls #以前咱們在主上已經備份過db1數據庫#

123.sql data INSTALL-BINARY my.cnf scripts support-files

[root@wjh5 mysql_2]# mysql -uroot -S /tmp/mysql2.sock db1 < 123.sql

#把123.sql導入到從庫#

[root@wjh5 mysql_2]# mysql -S /tmp/mysql2.sock

#登錄到從mysql#

mysql> slave stop; centos7用stop slave;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> change master to master_host='127.0.0.1', master_port=3306, master_user='cong', master_password='123123', master_log_file='wjh.000001', master_log_pos=106;

Query OK, 0 rows affected (0.05 sec)

mysql> slave start;

Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G;

測試mysql主從

[root@wjh5 ~]# mysql #登錄主mysql#

mysql> unlock tables; #解鎖表#

測試主從,在主上刪除一個表

mysql> use db1;

mysql>show tables;

mysql> drop table func; #把表func刪除了#

而後咱們在從上查看:

mysql> use db1;

mysql>show tables;

#從上表func沒了#

建議: MySQL 主從機制比較脆弱,謹慎操做。若是重啓 master,務必要先把 slave 停掉,

也就是說須要在 slave 上去執行 slave stop 命令,而後再去重啓 master 的 mysql 服務,不然

頗有可能就會中斷了。固然重啓完後,還須要把 slave 給開啓 slave start。

相關文章
相關標籤/搜索