mysql 主主複製

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的位置
相關文章
相關標籤/搜索