MySQL多實例實現半同步複製php
主庫1:192.168.40.150mysql
主庫2:192.168.40.161sql
從庫(2個MySQL實例):192.168.40.162安全
一:分別在192.168.40.161和192.168.40.150使用【show master status;】記錄當前的複製位置bash
以下所示服務器
mysql> show master status;架構
+--------------+----------+--------------+------------------+-------------------+socket
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |ide
+--------------+----------+--------------+------------------+-------------------+ui
| mysql.000006 | 11426362 | | | |
+--------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
二:master(分別在192.168.40.161和192.168.40.150進行以下操做)
1.啓用二進制日誌
log_bin=mysql
log-bin-index=mysql-index
2.爲master選擇一個在當前複製架構中唯一的server-id
server-id={0-2^32}
3.建立一個具備複製權限的用戶賬號
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.40.162' IDENTIFIED BY 'replpass';
mysql> FLUSH PRIVILEGES;
4.分別master的配置文件中的mysqld段添加以下一行,並重啓服務
rpl_semi_sync_master_enabled=ON (或者:mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';)
mysql> SHOW GLOBAL VARIABLES LIKE '%semi%';
mysql> SET GLOBAL rpl_semi_sync_master_enabled=ON;
mysql> SET GLOBAL rpl_semi_sync_master_timeout=1000;
5.配置主從複製時的事務安全:
在主服務器上mysqld段配置:sync_binlog=1
6.重啓mysql服務
2、slave(在192.168.40.162的兩個mysql實例中進行以下操做)
1.在192.168.40.162配置兩個實例:socket端口分別爲3306和3307,具體配置請參考配置文件。
2.建立所須要的目錄
mkdir -p /data/{mysql3306,mysql3307}
3.分別對192.168.40.161和192.168.40.150的數據目錄打包,而後分別上傳至192.168.40.162的/data/mysql3306和/data/mysql3307目錄下
例如:
# cd /data/mysql/
# tar zcf mysql_162.tar.gz ./*
# scp mysql_162.tar.gz 192.168.40.162:/data/mysql3306/
4.啓用中繼日誌(並關閉二進制日誌)
relay-log=/data/mysql3306/relay-3306.log
relay-log-index=/data/mysql3306/relay-log-index-3306.log
5.爲slave選擇一個在當前複製架構中唯一的server-id
server-id={0-2^32}
6.爲slave選擇一個在當前複製架構中唯一的server-uuid
修數據目錄下的auto.cnf 修數據目錄下的auto.cnf 的server-uuid
如將
server-uuid=3fd1f0a1-b34e-11e4-996a-000c29b1b59d
修改成
server-uuid=3fd1f0a1-b34e-11e4-996a-000c29b1b52d
五、複製過濾器
slave:
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
8.重啓mysql服務
9.開啓半同步複製
從服務器:
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
mysql> SET GLOBAL rpl_semi_sync_slave_enabled=ON;
在主服務器驗正半同步複製是否生效:
mysql> SHOW GLOBAL STATUS LIKE '%semi%';
9.鏈接至主服務器
mysql> CHANGE MASTER TO MASTER_HOST='192.168.40.161', MASTER_USER='repluser', MASTER_PASSWORD='replpass', MASTER_PORT=3306, MASTER_LOG_FILE='mysql.000006', MASTER_LOG_POS=11426362;
mysql> START SLAVE;
10.檢查主從是否成功
mysql> show slave status;
主服務器配置文件: [root@db_peizi1 ~]# more /etc/my.cnf [client] port=3306 socket = /usr/local/mysql/mysql.sock [mysql] default-character-set=utf8 [mysqld] port = 3306 socket = /usr/local/mysql/mysql.sock basedir=/usr/local/mysql datadir=/data/mysql server_id=1 user=mysql skip-name-resolve log_bin=mysql expire_logs_days = 30 sync_binlog=1 rpl_semi_sync_master_enabled=ON #slow_log slow-query-log=On slow_query_log_file=/data/logs/mysql/peizi-slow.log long_query_time=1 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character-set-server=utf8 default-storage-engine=InnoDB explicit_defaults_for_timestamp=true skip-external-locking max_connections=300 query_cache_size=1048576 performance_schema_max_table_instances=600 table_definition_cache=400 table_open_cache=256 tmp_table_size=64M max_heap_table_size=64M thread_cache_size=16 myisam_max_sort_file_size=16G myisam_sort_buffer_size=32M key_buffer_size=25M read_buffer_size=128K read_rnd_buffer_size=256K sort_buffer_size=256K join_buffer_size=16M max_allowed_packet=4M innodb_file_per_table=1 innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=2M innodb_buffer_pool_size=64M innodb_log_file_size=16M innodb_thread_concurrency=8 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" [mysqld_safe] log-error=/data/logs/mysql/mysqld.log pid-file=/usr/local/mysql/tmp/mysqld.pid 多實例從服務器配置文件: [mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin [mysql] default-character-set=utf8 [mysqld1] port = 3306 socket = /usr/local/mysql/mysql-3306.sock basedir=/usr/local/mysql datadir=/data/mysql3306 pid-file=/var/lock/subsys/mysql3306/mysq-3306.pid server_id=11 user=mysql skip-name-resolve expire_logs_days = 30 master-info-file=/data/mysql3306/master-3306.info read-only relay-log=/data/mysql3306/relay-3306.log relay-log-index=/data/mysql3306/relay-log-index-3306.log replicate-ignore-db=mysql replicate-ignore-db=information_schema replicate-ignore-db=performance_schema # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character-set-server=utf8 default-storage-engine=InnoDB explicit_defaults_for_timestamp=true skip-external-locking max_connections=300 query_cache_size=1048576 performance_schema_max_table_instances=600 table_definition_cache=400 table_open_cache=256 tmp_table_size=64M thread_cache_size=16 myisam_max_sort_file_size=16G myisam_sort_buffer_size=32M key_buffer_size=25M read_buffer_size=128K read_rnd_buffer_size=256K sort_buffer_size=256K join_buffer_size=16M max_allowed_packet=4M innodb_file_per_table=1 innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=2M innodb_buffer_pool_size=64M innodb_log_file_size=8M innodb_thread_concurrency=8 lower_case_table_names=1 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" [mysqld2] port = 3307 socket = /usr/local/mysql/mysql-3307.sock basedir=/usr/local/mysql datadir=/data/mysql3307 pid-file=/var/lock/subsys/mysql3307/mysql-3307.pid server_id=6 user=mysql skip-name-resolve expire_logs_days = 30 master-info-file=/data/mysql3307/master-3307.info read-only relay-log=/data/mysql3307/relay-3307.log relay-log-index=/data/mysql3307/relay-log-index-3307.log replicate-ignore-db=mysql replicate-ignore-db=information_schema replicate-ignore-db=performance_schema # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character-set-server=utf8 default-storage-engine=InnoDB explicit_defaults_for_timestamp=true skip-external-locking max_connections=300 query_cache_size=1048576 performance_schema_max_table_instances=600 table_definition_cache=400 table_open_cache=256 tmp_table_size=64M thread_cache_size=16 myisam_max_sort_file_size=16G myisam_sort_buffer_size=32M key_buffer_size=25M read_buffer_size=128K read_rnd_buffer_size=256K sort_buffer_size=256K join_buffer_size=16M max_allowed_packet=4M innodb_file_per_table=1 innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=2M innodb_buffer_pool_size=64M innodb_log_file_size=8M innodb_thread_concurrency=8 lower_case_table_names=1 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"