MySQL實現雙主從架構配置

MySQL實現雙主從架構配置

環境信息

服務器信息

IP 簡稱
192.168.94.21 server21
192.168.94.31 server31

配置雙主從架構

修改MySQL的配置,開啓binlog

如果是新安裝的高版本MySQL,默認情況下是沒有生成/etc/my.cnf這個文件的,那我們就在etc目錄下新增一個my.cnf的配置文件,配置文件參數的意義可以參見博客,這裏就不再贅述了。

  1. server21新增my.cnf配置文件
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 特別注意這個server-id,兩臺MySQL的不能設置成一樣的哦
server-id=1
bind-address=0.0.0.0
port=3306
# 數據庫安裝目錄
basedir=/usr/local/mysql
# 數據文件存放目錄
datadir=/data/mysqldata
# 字符編碼集
character_set_server=utf8
lower_case_table_names=1
binlog-format=mixed
transaction_isolation=REPEATABLE-READ
auto-increment-increment=2 #步長爲2
auto-increment-offset=1  #奇數增長(兩臺server的配置不能一樣哦)
log-error=/usr/local/mysql/logs/err.log
log-bin=/data/mysqldata/mysql-bin
log-bin-index=/data/mysqldata/mysql-bin.index
log_slave_updates=1
slow_query_log=1
slow_query_log_file=/usr/local/mysql/logs/slow-queries.log
general_log=1
general_log_file=/usr/local/mysql/logs/general-log.log
expire_logs_days=7
max_binlog_size=1024M

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_allowed_packet=128M
max_connections=1000
#skip-name_resolve
log_bin_trust_function_creators=1
  1. server31新增my.cnf配置文件
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
server-id=2
bind-address=0.0.0.0
port=3306
basedir=/usr/local/mysql
datadir=/data/mysqldata
character_set_server=utf8
lower_case_table_names=1
binlog-format=mixed
transaction_isolation=REPEATABLE-READ
auto-increment-increment=2 #步長爲2
auto-increment-offset=2  #奇數增長
log-error=/usr/local/mysql/logs/err.log
log-bin=/data/mysqldata/mysql-bin
log-bin-index=/data/mysqldata/mysql-bin.index
log_slave_updates=1
slow_query_log=1
slow_query_log_file=/usr/local/mysql/logs/slow-queries.log
general_log=1
general_log_file=/usr/local/mysql/logs/general-log.log
expire_logs_days=7
max_binlog_size=1024M

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_allowed_packet=128M
max_connections=1000
#skip-name_resolve
log_bin_trust_function_creators=1
  1. 保存配置,然後重啓MySQLservice mysqld restart

如果是新安裝的MySQL,登錄到MySQL控制檯需要先修改密碼
設置數據庫root用戶密碼

set password for root@localhost=password('123456');

配置MYSQL主從關係及開啓主從同步

  1. 先登錄到server21的MySQL控制檯
    mysql –u root –p
  2. 創建主從同步賬號,並鎖定數據庫表
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'196.168.94.31' IDENTIFIED BY "slave";   #創建同步賬號
FLUSH PRIVILEGES;    #權限修改立即生效
FLUSH TABLES WITH READ LOCK;    #鎖定數據庫爲只讀,確保備份數據一致性
  1. 查看server21的master信息,記錄下File和position兩個參數的信息(建議查看兩次,取最後一次的結果),在建立主從關係的時候用得上
    show master status;
    如下圖所示:
    在這裏插入圖片描述
  2. 再開一個server31的ssh窗口,登錄到MySQL控制檯,輸入以下命令建立server21和server31的主從同步關係
CHANGE MASTER TO MASTER_HOST='196.168.94.31', MASTER_PORT = 3306, MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=1093;
  1. server31上創建主從同步賬號,並鎖定數據庫表
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'196.168.94.21' IDENTIFIED BY "slave";   #創建同步賬號
FLUSH PRIVILEGES;    #權限修改立即生效
FLUSH TABLES WITH READ LOCK;    #鎖定數據庫爲只讀,確保備份數據一致性
  1. 查看server31的master信息參數,記錄下File和position兩個參數信息,參見第3步
    show master status;
  2. 切回到server21的MySQL控制檯,執行以下命令建立主從同步關係
CHANGE MASTER TO MASTER_HOST='196.168.94.21', MASTER_PORT = 3306, MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=613;
  1. 分別在兩臺server上執行命令,開始同步
    start slave;
  2. 執行命令show slave status\G查看同步狀態信息,查看狀態信息中的Slave_IO_Running和Slave_SQL_Running狀態爲YES即可,如圖所示:
    在這裏插入圖片描述
  3. 執行解開對錶的鎖定
    unlock tables;
    至此,MySQL的雙主從配置就完成了。可以分別在兩臺機器的數據庫上新建表和新插入記錄來測試,主從同步是否設置成功。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章