国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql主從復制配置步驟經典實例

2024-07-24 12:39:41
字體:
來源:轉載
供稿:網友

主從復制的核心就是把mysql數據庫從A機器同時備份到B機器了,這樣可以方便分布式的數據處理了,下面我們來看一個經典的mysql主從復制配置步驟.

IP規劃:

mysql主:192.168.0.100

mysql從:192.168.0.200

my.cnf配置:主mysql中的[mysqld]項里除了要配置相關參數以外還要配置必要的三項,現將一個最簡單的示例:

  1. [mysqld] 
  2. user=mysql 
  3. pid-file=/var/run/mysqld/mysqld.pid 
  4. socket=/var/run/mysqld/mysqld.sock 
  5. basedir=/usr 
  6. datadir=/var/lib/mysql 
  7. tmpdir=/tmp 
  8. log-bin=master-bin 
  9. log-bin-index=master-bin.index 
  10. server-id=1 

備機相應的配置如下:

  1. [mysqld] 
  2. user=mysql 
  3. pid-file=/var/run/mysqld/mysqld.pid 
  4. socket=/var/run/mysqld/mysqld.sock 
  5. basedir=/usr  --Vevb.com 
  6. datadir=/var/lib/mysql 
  7. tmpdir=/tmp 
  8. server-id=2 
  9. relay-log=slave-relay-bin 
  10. 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)

當出現上面的提示時,表示已新建用戶成功.

  1. mysql> show master status; 
  2. +-------------------+----------+--------------+------------------+ 
  3. | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
  4. +-------------------+----------+--------------+------------------+ 
  5. | master-bin.000004 |      224 |              |                  | 
  6. +-------------------+----------+--------------+------------------+ 
  7. 1 row in set (0.00 sec)  --Vevb.com 

在備mysql上指定復制主機的相關信息,并指定要復制的二進制文件和log號.

  1. 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上進行建庫,建表,并插入測試數據:

  1. mysql> create database repl; 
  2. mysql> create table my(id int(3),name char(10)); 
  3. mysql> insert into first_tb values (001,'test'); 

以上操作在主機上每操作一步,都可以在備機上看到也有相應的庫、表、值的增加,干脆來個狠的,在主mysql上利用批處理,加入1000條數據:

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

在備機上,對應上面的主機的操作,都可以查看到相應的數據.

  1. mysql> show databases; 
  2. mysql> use repl; 
  3. mysql> show tables; 
  4. mysql> select * from my; 

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

mysql>flush tables with read lock;

先利用mysqldump導出所有的數據,并導入到備機,完成后,再在主mysql上解鎖.

mysql>unlock tables;

當然如果數據量很大的情況下,利用mysqldump處理是很慢的,這里建議使用復制物理文件進行數據同步.

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

  1. binlog-do-db=repl 
  2. binlog_ignore_db=mysql 
  3. binlog_ignore_db=information_schema 
  4. replicate-do-db=repl 
  5. replicate-wild-ignore-table=mysql 
  6. replicate-wild-ignore-table=information_schema 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 翁牛特旗| 广河县| 出国| 界首市| 宣汉县| 江孜县| 洛宁县| 伊川县| 临沧市| 桐庐县| 施秉县| 杭锦后旗| 贺兰县| 车致| 昆明市| 白朗县| 乡宁县| 太谷县| 图木舒克市| 香格里拉县| 寿阳县| 策勒县| 永福县| 河东区| 诸暨市| 胶南市| 榕江县| 长沙市| 万州区| 区。| 汝城县| 雅江县| 丰城市| 清徐县| 应城市| 兴山县| 上饶县| 澄江县| 普兰店市| 县级市| 留坝县|