標籤:mysql 主主複製
MySQL 雙主複製配置實驗過程
伺服器環境:
+-------------------+---------------------------------------------------
| |伺服器節點1 |伺服器節點2 |
+-------------------+------------------------+-------------------------+
|OS |RHEL 5.6 |RHEL 5.6 |
+-------------------+------------------------+-------------------------+
|DB Version |MySQL 5.7.10 |MySQL 5.7.10 |
+-------------------+------------------------+-------------------------+
|HostName |Linux01 |Linux02 |
+-------------------+------------------------+-------------------------+
|IPADDR |10.10.88.11 |10.10.88.12 |
+-------------------+------------------------+-------------------------+
1. 安裝MySQL到資料庫伺服器節點1
1.1 建立mysql使用者、mysql安裝目錄、資料目錄
useradd mysql
mkdir -p /mysql
mkdir -p /mysql/mysqldata
chown mysql:mysql -R /mysql
1.2 將MySQL安裝包上傳到伺服器,並且解壓
cd /mysql
#上傳安裝包到此目錄
unzip mysql.zip
tar -xvzf mysql.tar.gz
chown mysql:mysql -r mysql-advanced-5.7.10-linux-glibc2.5-x86_64
#建立ln,方便管理mysql
ln -s mysql-advanced-5.7.10-linux-glibc2.5-x86_64 mysql
1.3 添加mysql服務
cp ./support-files/mysql.server /etc/init.d/mysql
#修改/etc/init.d/mysql中的basedir和datadir為實際的目錄
chkconfig --add mysql
1.4 將預設設定檔複製到/etc/my.cnf 並且編輯設定檔
cp ./support-files/my-default.cnf /etc/my.cnf
在/etc/my.cnf設定檔中配置需要的參數,如:basedir、datadir、log-bin、server_id等等
1.5 初始化資料庫
cd /mysql/mysql
./bin/mysqld --initialize --user=mysql
./bin/mysql_ssl_rsa_setup
./bin/mysqld_safe --user=mysql &
使用初始化庫裡面提供的臨時密碼登入資料,並且運行下面的命令修改密碼:
set password=password(‘123456‘);
flush privileges
2. 將一節點的資料庫複寫到2節點,並且做參數修改,刪除/mysql/mysqldata/auto.cnf檔案,使資料庫重啟時自動產生該檔案
3. 配置主主複製
3.1 建立複製需要的使用者,使用者需要slave許可權(必要),file,select許可權(可選)
grant replication slave, file, select on *.* to ‘mysql_sync‘@‘linux01‘ identified by ‘123456‘
grant replication slave, file, select on *.* to ‘mysql_sync‘@‘linux02‘ identified by ‘123456‘
備忘:如果想要在Slave上有許可權執行 "LOAD TABLE FROM MASTER" 或 "LOAD DATA FROM MASTER" 語句的話,必須授予全域的 FILE 和 SELECT 許可權。
3.2 分別修改兩台伺服器上面的設定檔
伺服器1:
log-bin=mysql-bin-db01
server-id=11
log-slave-updates
slave-skip-errors=all
auto_increment_increment=2
auto_increment_offset=1
伺服器2:
log-bin=mysql-bin-db02
server-id=12
log-slave-updates
slave-skip-errors=all
auto_increment_increment=2
auto_increment_offset=2
其中,server-id兩個伺服器必須配置不一樣,
auto_increment_increment配置每個節點中的自動成長欄位每次增長的步長
auto_increment_offset配置各個節點自動成長欄位的初始值從多少開始
如果我們不設定這兩個變數的話,含有自動成長欄位的表將在多個伺服器上面各自維護,會出現重複的情況導致複製出錯。
如上面的設定,A節點自增長的欄位產生的值將會是 1,3,5.... 而B節點將是2,4,6......
3.3 重啟兩台資料庫執行個體
server mysql restart
3.4 在兩個資料庫中執行:show master status;查看主伺服器狀態:
節點1:
mysql> show master status;
+-----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------------+----------+--------------+------------------+-------------------+
| mysql-bin-db01.000001 | 1096 | | | |
+-----------------------+----------+--------------+------------------+-------------------+
1 row in set (3.71 sec)
節點2:
mysql> show master status;
+-----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------------+----------+--------------+------------------+-------------------+
| mysql-bin-db02.000001 | 625 | | | |
+-----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
3.5 配置從伺服器Slave(兩個節點分別執行)
節點1:
mysql> change master to master_host=‘10.10.88.12‘,master_user=‘mysql_sync‘,master_password=‘123456‘,master_log_file=‘mysql-bin-db02.000001‘,master_log_pos=625;
mysql> start slave; //啟動從伺服器複製功能
節點2:
mysql> change master to master_host=‘10.10.88.11‘,master_user=‘mysql_sync‘,master_password=‘123456‘,master_log_file=‘mysql-bin-db01.000001‘,master_log_pos=1096;
mysql> start slave; //啟動從伺服器複製功能
3.6 檢查狀態:
show slave status\G
本文出自 “資料庫之路” 部落格,請務必保留此出處http://dbaway.blog.51cto.com/7099215/1747646
MySQL主主複製實驗