https://cloud.tencent.com/info/711536a2599dad276e28df67adc3d0d7.htmlhtml
主主複製指的是互相同步,兩臺機器,可作故障轉移用 1、準備(主從都須要配置): yum -y install mysql mysql-server #安裝mysql yum -y install ntpdate #安裝時間同步 echo '*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >>/var/spool/cron/root #配置網絡時間同步 service mysqld start #啓動服務 chkconfig --add mysqld #添加爲系統服務 chkconfig mysqld on #開啓默認運行級別 2、主服務器配置:主配置文件默認爲:/etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0 log-bin=master-bin #開啓二進制日誌文件 server-id=1 #設置服務器id,保證全局惟一 sync-binlog=1 #全局惟一的server-id innodb-flush-logs-at-trx-commit=1 innodb-support-xa=1 service mysqld restart #重啓動服務 mysql> show global variables like '%server%'; #數據庫id mysql> show master logs; #查看數據庫二進制日誌 mysql> show master status; #查看主服務器狀態,記住二進制日誌名,配置從服務器會用 mysql> grant replication slave,replication client on *.* to 'copy'@'192.168.0.50' identified by '123.com'; #受權192.168.0.50主機上的copy用戶對全部庫有複製權限 mysql> select Host,User,Password from mysql.user; #查看用戶 3、從服務器配置: [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0 relay-log=slave-log #啓用中繼日誌 server-id=10 #服務器id,全局惟一 read-only=1 #將服務器設置爲只讀模式(對擁有root權限的用戶無效) service mysqld restart #重啓動服務 mysql> change master to master_host='192.168.0.10',master_user='copy', master_password='123.com',master_log_file='master-bin.000001',master_log_pos=590; master_host #主服務器地址 master_user #擁有複製權限的用戶 master_password #密碼 master_log_file #從哪一個二進制日誌開始複製 master_log_pos #從二進制日誌的什麼位置開始複製 mysql> start slave; #開啓從服務器 mysql> show slave status\G; #查看從服務器狀態 4、驗證主從: 主服務器: mysql> create database db_test; #建立數據庫 從服務器: mysql> show databases; #查看服務器是否同步 5、主主複製 服務器A: [mysqld] #添加內容 log-bin=master-bin #啓用二進制日誌 relay-log=slave-log #啓用中繼日誌 server-id=1 #服務器id,全局惟一 auto-increment-offset=1 #自增列起始 auto-increment-increment=2 #自增列一次步進(例:1,3,5,7,9...) mysql> grant replication slave,replication client on *.* to 'copy'@'192.168.0.50' identified by '123.com'; mysql> change master to master_host='192.168.0.50',master_user='copy', master_password='123.com',master_log_file='master-bin.000001',master_log_pos=106; mysql> start slave; mysql> show slave status\G; 服務器B: [mysqld] #添加內容 log-bin=master-bin relay-log=slave-log server-id=10 auto-increment-offset=2 #自增列起始 auto-increment-increment=2 #自增列一次步進(例:2,4,6,8,10...) mysql> grant replication slave,replication client on *.* to 'copy'@'192.168.0.10' identified by '123.com'; mysql> change master to master_host='192.168.0.10',master_user='copy', master_password='123.com',master_log_file='master-bin.000003',master_log_pos=106; mysql> start slave; mysql> show slave status\G; 6、半同步複製 要想使用半同步複製,必須知足如下幾個條件: 1. MySQL 5.5及以上版本 2. 變量have_dynamic_loading爲YES 3. 異步複製已經存在 主: mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; #安裝插件 mysql> show plugins; #查看插件是否安裝成功 mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1; #啓用半同步 mysql> show status like 'Rpl_semi_sync_master_status'; #查看是否在運行 從: mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; #安裝插件 mysql> show plugins; mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1; #啓用半同步 mysql> STOP SLAVE #關閉複製線程 mysql> START SLAVE #開啓複製線程 mysql> show status like 'Rpl_semi_sync_slave_status'; #查看是否在運行 mysql> show variables like '%Rpl%'; #查看和半同步相關的服務器變量 rpl_semi_sync_master_enabled #是否啓用半同步 rpl_semi_sync_master_timeout #等待超時時間 rpl_semi_sync_master_wait_for_slave_count #須要等待多少個slave應答,才能返回給客戶端 mysql> show status like '%Rpl_semi%'; #半同步狀態 Rpl_semi_sync_master_clients #當前半同步複製從的個數 7、和複製相關的文件 從節點: master.info:用於保存slave鏈接至master時的相關信息(帳號,密碼,服務器地址,複製的二進制文件等) relay-log.info:保存當前slave節點上已經複製到的二進制文件位置,和relay-log的位置