mysql主從複製配置步驟經典執行個體

來源:互聯網
上載者:User

IP規劃:

mysql主:192.168.0.100
mysql從:192.168.0.200

my.cnf配置

主mysql中的[mysqld]項裡除了要配置相關參數以外還要配置必要的三項,現將一個最簡單的樣本:

[mysqld]
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
log-bin=master-bin
log-bin-index=master-bin.index
server-id=1

備機相應的配置如下:

[mysqld]
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
server-id=2
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
註:relay項配置的是中繼日誌和中繼索引檔案,如果二進位記錄檔和中繼記錄檔名不指定,則預設使用主機名稱。推薦進行自訂。

重啟mysql使上面的配置生效。

在主mysql上建立一個用於複製許可權的使用者:

mysql> grant replication slave on *.* to 'repl'@'%' identified by 'mysqls';
上面建立的為使用者名稱repl,密碼為mysqls的使用者。當然出於安全考慮,可以修改句中的%號為指定主機。
Query OK, 0 rows affected (0.00 sec)
當出現上面的提示時,表示已建立使用者成功。

mysql> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000004 |      224 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
 

在備mysql上指定複製主機的相關資訊,並指定要複製的二進位檔案和log號

mysql> change master to master_host='192.168.0.100',master_user='repl',master_password='mysqls',master_log_file='master-bin.000004',master_log_pos=224;

master_host這一項的值建議使用主機名稱,因為如果遇到IP地址變更的,主機名稱一般不會變更,所以還是生效的。但IP變了,這裡還是用的IP ,就會導致主機無法找到對應的主裝置。
啟用slave狀態

mysql> start slave;

使用show slave status查看是否配置成功:
mysql> show slave status;

結果太多,我這裡就不再複製,但主機看下面的兩處,如果看到值是yes,表示已經成功。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

驗證資料的同步:
主mysql上進行建庫,建表,並插入測試資料:

mysql> create database repl;
mysql> create table my(id int(3),name char(10));
mysql> insert into first_tb values (001,'test');
以上操作在主機上每操作一步,都可以在備機上看到也有相應的庫、表、值的增加。

乾脆來個狠的,在主mysql上利用批處理,加入1000條資料:
測試資料

#!/bin/bash
for (( i=0;i<1000;i++))
do
m=`tr -dc A-Z-a-z</dev/urandom |head -c 5`
mysql -uroot -ptest repl -e"insert into my values ($i,'"$m"')"
done
在備機上:

對應上面的主機的操作,都可以查看到相應的資料。

mysql> show databases;
mysql> use repl;
mysql> show tables;
mysql> select * from my;
 

上面的操作都是在主機和備機都是在一個全新安裝的環境下進行的測試。而在生產環境中要使用時,先要將雙方要同步的資料庫同容進行同步。而如果主要資料還有應用在使用時,還要重新整理資料庫並銷定資料庫。

mysql>flush tables with read lock;

先利用mysqldump匯出所有的資料,並匯入到備機。
完成後,再在主mysql上解鎖

mysql>unlock tables;

當然如果資料量很大的情況下,利用mysqldump處理是很慢的,這裡建議使用複製物理檔案進行資料同步。
同步操作和上面的相同。

上面的mysql操作同步是對所有庫的完全同步,也包括mysql、information_schema這兩個庫的資料。如果要指定同步的資料庫和忽略的資料庫還要用到四個參數:

binlog-do-db=repl
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
replicate-do-db=repl
replicate-wild-ignore-table=mysql
replicate-wild-ignore-table=information_schema

當然上面的四個參數使用的時候是有講究的,使用不當還是有風險的。回頭再專門做一個總結吧!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.