mysqlマルチプライマリマルチスレーブ構成、自己増加idソリューション
43995 ワード
MySQL 2マスター(マルチマスター)マルチスレーブアーキテクチャ構成
一、役割区分
1、MySQLデータベース計画
私の今の環境は:zhdy 04とzhdy 05はすでにマスターアーキテクチャの配置ができて、今必要なのは2台以上のサーバーをマスターと1つ1つ同期することです.
ホスト名
IPアドレス
ロール#ロール#
Mysql_server_id
zhdy04
192.168.230.145
masterA
145
zhdy05
192.168.230.146
masterB
146
zhdy06
192.168.230.147
slaveA
147
zhdy07
192.168.230.148
slaveB
148
二、MySQLデータ同期設定
1、私たちがテストしたマシンデータベースはすべて初期値なので、データベースをインポートする必要はありません.(書き込みの理由は、構成された環境が現在と一致していない場合です.データのバックアップとインポートが必要です)
2、データ同期アカウントの追加
本来ならば、以前はホスト、すなわちzhdy 04とzhdy 05が互いに授権されていた.次に設定する必要があるのは、は、zhdy 04上でzhdy 06が同期できることを許可する. は、zhdy 05上でzhdy 07が同期できることを許可する.
zhdy 04 masterAサーバ:
zhdy 05 masterBサーバ:
3、データベースプロファイルの変更 zhdy 04 masterAサーバ: zhdy 05 masterBサーバ: zhdy 06 slaveAサーバ: zhdy 07 slaveBサーバ:
ここでは、私が行った構成をより理解しやすくするために、次のような追加のサービスは追加されていません.
4、4台のDBを再起動する:
5、同期設定: zhdy 04 masterAサーバ: zhdy 05 masterBサーバ: zhdy 06 slaveAサーバ: zhdy 07 slaveBサーバ:
6、構成の確認
まずは必ず4台のfirewalldを全てクローズ!
4台のサーバの
Slave_IO_Running: Yes Slave_SQL_Running: Yes
状況を開けろ! zhdy 06 slaveAサーバ: zhdy 04 masterAサーバ: zhdy 07 slaveBサーバ: zhdy 05 masterBサーバ:
これですべて同期に成功しました!
7、最後のステップは、プライマリサーバzhdy 04 masterAにデータベースを作成します.つまり、この4つのサーバにはこのデータベースがあります.
私はいちいちスクリーンを切らないで、それからすべてのデータベースはqqqというデータベースがあります!
8、まとめ
つまり、将来、私たちはマルチマスターを構築して、この配置を見終わってから考えているのではないでしょうか.ルータを構成するように、互いに接続する相互許可でいいのではないでしょうか.
次のように設定します.
これでメインmysqlを10台設置できるのではないでしょうか.
しかし、いったん20台を超えると?それとも100台ですか?
20台
…..
100台
…..
繰り返さないの?自己成長値はホストの数値に設定すればよいが,拡張性,すなわちできるだけ大きく設定することを考慮しなければならない.
転載先:https://www.cnblogs.com/cocoliu/p/9020845.html
一、役割区分
1、MySQLデータベース計画
私の今の環境は:zhdy 04とzhdy 05はすでにマスターアーキテクチャの配置ができて、今必要なのは2台以上のサーバーをマスターと1つ1つ同期することです.
ホスト名
IPアドレス
ロール#ロール#
Mysql_server_id
zhdy04
192.168.230.145
masterA
145
zhdy05
192.168.230.146
masterB
146
zhdy06
192.168.230.147
slaveA
147
zhdy07
192.168.230.148
slaveB
148
二、MySQLデータ同期設定
1、私たちがテストしたマシンデータベースはすべて初期値なので、データベースをインポートする必要はありません.(書き込みの理由は、構成された環境が現在と一致していない場合です.データのバックアップとインポートが必要です)
2、データ同期アカウントの追加
本来ならば、以前はホスト、すなわちzhdy 04とzhdy 05が互いに授権されていた.次に設定する必要があるのは、
zhdy 04 masterAサーバ:
mysql> grant replication slave on *.* to 'repl'@'192.168.230.147' identified by 'zhangduanya'; Query OK, 0 rows affected (0.03 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
zhdy 05 masterBサーバ:
mysql> grant replication slave on *.* to 'repl'@'192.168.230.148' identified by 'zhangduanya'; Query OK, 0 rows affected (0.03 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
3、データベースプロファイルの変更
server-id=145
log-bin=mysql-bin auto-increment-increment=2 auto-increment-offset=1 log-slave-updates
server-id=146
log-bin=mysql-bin auto-increment-increment=2 auto-increment-offset=2 log-slave-updates
server-id=147
server-id=148
ここでは、私が行った構成をより理解しやすくするために、次のような追加のサービスは追加されていません.
log-bin = mysql-bin # ,MASTER
binlog-format=ROW binlog-row-p_w_picpath=minimal log-slave-updates=true gtid-mode=on enforce-gtid-consistency=true master-info-repository=TABLE relay-log-info-repository=TABLE sync-master-info=1 slave-parallel-workers=0 sync_binlog=0 binlog-checksum=CRC32 master-verify-checksum=1 slave-sql-verify-checksum=1 binlog-rows-query-log_events=1 #expire_logs_days=5 max_binlog_size=1024M #binlog replicate-ignore-db = mysql # replicate-ignore-db = information_schema replicate-ignore-db = performance_schema replicate-ignore-db = test replicate-ignore-db = zabbix max_connections = 3000 max_connect_errors = 30 skip-character-set-client-handshake # init-connect='SET NAMES utf8' # SQL character-set-server=utf8 # wait_timeout=1800 # interactive_timeout=1800 # sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #sql skip-name-resolve slow_query_log=1 long_query_time = 6 slow_query_log_file=slow-query.log innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 16M binlog-do-db=openfire binlog-ignore-db=mysql,information_schema replicate-do-db=openfire replicate-ignore-db=mysql,information_schema read_only = 1 # read_only=0; # ,
4、4台のDBを再起動する:
/etc/init.d/mysqld restart
5、同期設定:
mysql> show master status;
master_log_file、master_log_pos
+------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000004 | 120 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.01 sec)
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000004 | 120 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
mysql> change master to master_host='192.168.230.145', master_user='repl', master_password='zhangduanya', master_log_file='mysql-bin.000004', master_log_pos=120; Query OK, 0 rows affected, 2 warnings (0.04 sec)
mysql> change master to master_host='192.168.230.146', master_user='repl', master_password='zhangduanya', master_log_file='mysql-bin.000004', master_log_pos=120; Query OK, 0 rows affected, 2 warnings (0.08 sec)
6、構成の確認
まずは必ず4台のfirewalldを全てクローズ!
# systemctl stop firewalld
# systemctl disable firewalld
4台のサーバの
Slave_IO_Running: Yes Slave_SQL_Running: Yes
状況を開けろ!
mysql> start slave;
Query OK, 0 rows affected (0.02 sec) mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.230.145 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 120 Relay_Log_File: zhdy06-relay-bin.000002 Relay_Log_Pos: 283 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes Slave_SQL_Running: Yes
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.230.146 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 120 Relay_Log_File: zhdy04-relay-bin.000012 Relay_Log_Pos: 283 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes Slave_SQL_Running: Yes
mysql> start slave;
Query OK, 0 rows affected (0.02 sec) mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.230.146 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 120 Relay_Log_File: zhdy07-relay-bin.000002 Relay_Log_Pos: 283 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes Slave_SQL_Running: Yes
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.230.145 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 120 Relay_Log_File: zhdy05-relay-bin.000011 Relay_Log_Pos: 283 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes Slave_SQL_Running: Yes
これですべて同期に成功しました!
7、最後のステップは、プライマリサーバzhdy 04 masterAにデータベースを作成します.つまり、この4つのサーバにはこのデータベースがあります.
mysql> show databases;
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | qqq | | test | +--------------------+ 5 rows in set (0.06 sec)
私はいちいちスクリーンを切らないで、それからすべてのデータベースはqqqというデータベースがあります!
8、まとめ
つまり、将来、私たちはマルチマスターを構築して、この配置を見終わってから考えているのではないでしょうか.ルータを構成するように、互いに接続する相互許可でいいのではないでしょうか.
次のように設定します.
auto-increment-increment = 10
auto-increment-offset = 1
auto-increment-increment = 10
auto-increment-offset = 2
auto-increment-increment = 10
auto-increment-offset = 3
これでメインmysqlを10台設置できるのではないでしょうか.
しかし、いったん20台を超えると?それとも100台ですか?
20台
auto-increment-increment = 20
auto-increment-offset = 1
auto-increment-increment = 20
auto-increment-offset = 2
…..
auto-increment-increment = 20
auto-increment-offset = 20
100台
auto-increment-increment = 100
auto-increment-offset = 1
auto-increment-increment = 100
auto-increment-offset = 2
…..
auto-increment-increment = 100
auto-increment-offset = 100
繰り返さないの?自己成長値はホストの数値に設定すればよいが,拡張性,すなわちできるだけ大きく設定することを考慮しなければならない.
転載先:https://www.cnblogs.com/cocoliu/p/9020845.html