mysql主主、主從

建立mysql 主主
  server1_mysql:192.168.1.108
  server2_mysql: 192.168.1.110
  拓撲結構:
  server1_mysql——-server2_mysql
  1.創建用戶並授權
  server1:
  mysql> GRANT REPLICATION SLAVE ON *.* TO 'server2'@'192.168.1.110'
  IDENTIFIED BY 'server2';
  mysql> flush privileges;
  server2:
  mysql> GRANT REPLICATION SLAVE ON *.* TO 'server1'@'192.168.1.108'
  IDENTIFIED BY 'server1';
  2.修改Mysql的主配置文件/etc/my.cnf
 
  server1:
log-bin=mysql-bin #必須要開啟二進制日志
server-id = 1  #另外一臺id改成2
binlog-do-db=test  #填寫需要同步的數據庫
binlog-ignore-db=mysql  #填寫不需要同步的數據庫
replicate-do-db=test #填寫需要同步的數據庫
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=1 #每次增長2
auto_increment_offset=1 #設置自動增長的字段的偏移量,即初始值為2
 
啟動Mysql服務:
  # service mysqld restart
  server2:
log-bin=mysql-bin #必須要開啟二進制日志
server-id = 2
binlog-do-db=test  #填寫需要同步的數據庫
binlog-ignore-db=mysql  #填寫不需要同步的數據庫
replicate-do-db=test #填寫需要同步的數據庫
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2 #每次增長2
auto_increment_offset=1 #設置自動增長的字段的偏移量,即初始值為2
  啟動Mysql服務:
  # service mysqld restart
  註:二都隻有server-id不同和 auto-increment- offset不同
  auto-increment-increment的值應設為整個結構中服務器的總數,本案例用到兩
  臺服務器,所以值設為2。
  3.重新啟動兩個服務器
  # service mysqld restart
  4.為瞭讓兩個數據庫一樣,我們備份其中一個數據庫,然後在另一個數據庫上恢
  復,這樣是兩個數據庫一開始都是一樣的。
  在server1上操作:
  # mysqldump –databases luowei > /tmp/luowei.sql
  在server2上操作:
  創建一個與mydb同名的空數據庫
  # mysql
  > CREATE DATABASE mydb;
  >\q
  # scp 192.168.1.108:/tmp/mydb.sql ?./
  # mysql -uroot -p mydb < /tmp/luowei.sql
  5.然後兩個服務器相互通告二進制日志的位置並啟動復制功能:
  在server1上:
  # mysql
  > CHANGE MASTER TO
  > MASTER_HOST='192.168.1.110',
  > MASTER_USER='server2',
  > MASTER_PASSWORD='server2';
  mysql > START SLAVE;
  在server2上:
  # mysql
  > CHANGE MASTER TO
  > MASTER_HOST='192.168.1.108',
  > MASTER_USER='server1',
  > MASTER_PASSWORD='server1';
  mysql > START SLAVE;
  6.查看,並驗證:
  分別在兩個數據庫服務器上查看
  mysql > START SLAVE;
  然後查看數據庫和表,你會發現內容是一樣的,這樣就是整個主主Mysql的架構
  的配置過程。
 
 
檢查主從同步性
 
  [root@node1 ~]# mysql #進入mysql命令行
 
  mysql> show master status; #顯示 ( 不同主機結果不同 )
 
  +——————+———-+——————-+——————+
 
  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
 
  +——————+———-+——————-+——————+
 
  | updatelog.000028 | 313361 |db1 | mysql |
 
  +——————+———-+——————-+——————+
 
  (同步之前如果懷疑主從數據不同步可以采取:上面冷備份遠程拷貝法或者在從服務器上命行同步方法)
 
  在從服務器執行MySQL命令下:
 
  mysql> slave stop; #先停止 slave 服務
 
  mysql> CHANGE MASTER TO MASTER_LOG_FILE='updatelog.000028',MASTER_LOG_POS=313361;
 
  #根據上面主服務器的 show master status 的結果,進行從服務器的二進制數據庫記錄回歸,達到同步的效果
 
  mysql>slave start; #啟動從服務器同步服務
 
  mysql> show slave status\G;
 
  用show slave status\G;看一下從服務器的同步情況
 
  Slave_IO_Running: Yes
 
  Slave_SQL_Running: Yes
 
  如果都是yes,那代表已經在同步
 
  利用 mysql 的客戶端來測試,要比在命令行方便的多。
作者“郭煒君工作學習記錄”

發佈留言