MySQL的主從複製和雙主模型


一、主從服務器的IP地址

Master IP:172.16.1.1

Salve IP:172.16.1.64

wKioL1Qf6-Twg6x9AAKZqVU98Co146.jpg

二、安裝mysql並配置好Master與Slave

1、安裝musql服務器

#yum install mysql-server -y

2、創建MySQL數據存放位置

mkdir /mydata/data -pv

mkdir /mydata/binlogs -pv

mkdir /mydata/reaylogs -pv (從服務器上創建)


3、修改目錄的屬主、屬組

chown -R mysql.mysql /mydata/*


Mster Server:

#vim /etc/mysql/my.cnf


datadir = /mydata/data

log-bin=/mydata/binlogs/master-bin


Salve Server:

vim /etc/mysql/my.cnf


datadir = /mydata/data

relay-log = /mydata/reaylogs/relay-log

#log-bin=mysql-bin

#binlog_format=mixed

server-id = 11

***主從服務器的Server-id的值不同


三、爲Slave創建連接Master的賬號:

MariaDB [(none)]> grant replication slave, replication client on *.* to repluser@'172.16.%.%' identified by 'mageedu';

MariaDB [(none)]> flush privileges;

查看主節點的status信息:

MariaDB [(none)]> show master status;

+-------------------+----------+--------------+------------------+

| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+-------------------+----------+--------------+------------------+

| master-log.000007 |      245 |              |                  |

+-------------------+----------+--------------+------------------+


四、在Salev上連接Master:

1、連接主服務器時如果報:

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='172.16.1.1',MASTER_USER='repluser',MASTER_PASSWORD='mageedu',MASTER_LOG_FILE='master-log.000007',MASTER_LOG_POS=245;

ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MariaDB error log

解決方法:

MariaDB [(none)]> reset slave;

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='172.16.1.1',MASTER_USER='repluser',MASTER_PASSWORD='mageedu',MASTER_LOG_FILE='master-log.000007',MASTER_LOG_POS=245;

查看從節點狀態:

MariaDB [(none)]> show slave status\G


2、啓動IO_THREAD、SQL_THREAD線程:

MariaDB [(none)]> START SLAVE IO_THREAD;

MariaDB [(none)]> START SLAVE SQL_THREAD;

或者使用

MariaDB [(none)]>START SLAVE;


3、再次查看從節點狀態:

MariaDB [(none)]> SHOW SLAVE STATUS\G

對比啓動SLAVE前後的區別

wKioL1Qf6e7BFMrgAAI5GjHr6wI341.jpg

wKiom1Qf6c_x_LmoAAKJynOd4Wg996.jpg

在主節點上創建數據庫

MariaDB [(none)]>create database NAME;

在從節點查看:

MariaDB [(none)]>show databases;



#################################################################

###############補充部分############################################

1、停止從節點複製功能方法:

MariaDB [(none)]> stop slave;


2、如從服務器中途加入,則需要從Master導入數據

在Master上:#mysqldump --all-databases --lock-all-tables  --routines --triggers --master-data=2 --flush-logs > /tmp/all.sql

在備份的數據導入到Slave上:#scp /tmp/all/sql [email protected]:/tmp

導入備份文件後再Slave上進行如下操作:

#mysql < /tmp/all.sql


3、如何限制從服務器只讀?

MariaDB [mysql]> SET GLOBAL read_only = 1;   

*************************    

[mysqld]

read_only = 1



4、阻止所有用戶執行寫操作:

MariaDB [mysql]> flush tables with read lock;


5、如何保證主從複製時的事務安全?

前提:mysql對二進制日誌事件數據會有緩衝;

在master上設置如下參數:

sync_binlog = 1


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章