MySQL主主複製實驗

來源:互聯網
上載者:User

標籤: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主主複製實驗

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.