MariaDB、MySQL雙主互備模型同步數據

    MySQL雙主互備即兩臺MySQL服務器同時是主服務器,而同時又是對方的從服務器,這樣可以分擔主服務器的一部分寫請求,因爲如果是單主模型的話數據寫入只能寫入在一臺MySQL服務器,而雙主模型則可同時寫在兩臺服務器上,有效加快了寫入的速度,而且還能提供數據的備份功能。


環境如下:

server1:CentOS 6.5 x86_64 mariadb 10.0.10 IP:192.168.10.204

server2:CentOS 6.5 x86_64 mariadb 10.0.10  IP:192.168.10.205


一:服務器的my.cnf配置:

Server1:my.cnf全部配置如下:

[root@node4 ~]# grep -v "#"  /etc/mysql/my.cnf 

[client]

port = 3306

socket = /tmp/mysql.sock


[mysqld]

port = 3306

socket = /tmp/mysql.sock

skip-external-locking

key_buffer_size = 256M

max_allowed_packet = 1M

table_open_cache = 256

sort_buffer_size = 1M

read_buffer_size = 1M

read_rnd_buffer_size = 4M

myisam_sort_buffer_size = 64M

thread_cache_size = 8

query_cache_size= 16M

thread_concurrency = 4

datadir = /data/mydata

innodb_file_per_table = ON  #每一條事物完成後就寫入二進制

log-bin=/data/binlogs/master-bin #二進制日誌目錄

binlog_format=mixed

server-id = 100 #兩臺服務器的server-id絕不可以相同

auto_increment_increment=2 # 定義每次增長間隔爲2即步長,起始值爲1步長爲2表示每次增長就加2,1、3、5、7、9,用於和從服務器區分值

auto_increment_offset=1 # 定義主鍵自動增長起始值

skip_slave_start  #跳過slave備份線程,即服務啓東時候不自動打開

relay_log = /data/relaylogs/relay-bin  #中繼日誌路徑


[mysqldump]

quick

max_allowed_packet = 16M


[mysql]

no-auto-rehash


[myisamchk]

key_buffer_size = 128M

sort_buffer_size = 128M

read_buffer = 2M

write_buffer = 2M


[mysqlhotcopy]

interactive-timeou


server2 my.cnf全部配置:

[root@node5 ~]# grep -v "#" /etc/mysql/my.cnf 

[client]

port = 3306

socket = /tmp/mysql.sock


[mysqld]

port = 3306

socket = /tmp/mysql.sock

skip-external-locking

key_buffer_size = 256M

max_allowed_packet = 1M

table_open_cache = 256

sort_buffer_size = 1M

read_buffer_size = 1M

read_rnd_buffer_size = 4M

myisam_sort_buffer_size = 64M

thread_cache_size = 8

query_cache_size= 16M

thread_concurrency = 4

innodb_file_per_table = ON

datadir = /data/mydata

log-bin=/data/binlogs/master-bin

binlog_format=mixed

server-id = 4

auto_increment_increment=2

auto_increment_offset=2

skip_slave_start

relay_log = /data/relaylogs/relay-bin


[mysqldump]

quick

max_allowed_packet = 16M


[mysql]

no-auto-rehash


[myisamchk]

key_buffer_size = 128M

sort_buffer_size = 128M

read_buffer = 2M

write_buffer = 2M


[mysqlhotcopy]

interactive-timeout


然後啓動mysqld服務


二:授權複製並啓動複製:

1、server1:

mysql> grant replication slave,file on *.* to 'tom'@'192.168.%.%' identified by '123456';

mysql> flush privileges;


2、server2:

mysql> grant replication slave,file on *.* to 'tom'@'192.168.%.%' identified by '123456';

mysql> flush privileges;


3、在各個server指向對方當主服務器:

server1:

mysql> CHANGE MASTER TO     MASTER_HOST='192.168.10.205',MASTER_USER='tom',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-bin.000004',MASTER_LOG_POS=1160;

   注:MASTER_LOG_FILE='master-bin.000004',MASTER_LOG_POS=1160; 是對方主服務器192.168.10.205查看show master status得知


server2:

mysql>  CHANGE MASTER TO     MASTER_HOST='192.168.10.204',MASTER_USER='tom',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-bin.000003',MASTER_LOG_POS=526;

     注:MASTER_LOG_FILE='master-bin.000004',MASTER_LOG_POS=1160; 是對方主服務器192.168.10.204查看show master status得知


4、啓動slave線程:

server1:

mysql> start slave;

    Query OK, 0 rows affected, 1 warning (0.00 sec)


server2:

mysql> start slave;

    Query OK, 0 rows affected, 1 warning (0.00 sec)


5、查看狀態:

serever1:

mysql> show slave status\G

    *************************** 1. row ***************************

    Slave_IO_State: Waiting for master to send event

    Master_Host: 192.168.10.205

    Master_User: tom

    Master_Port: 3306

    Connect_Retry: 60

    Master_Log_File: master-bin.000004

    Read_Master_Log_Pos: 1160

    Relay_Log_File: relay-bin.000002

    Relay_Log_Pos: 536

    Relay_Master_Log_File: master-bin.000004

    Slave_IO_Running: Yes     #

    Slave_SQL_Running: Yes  #此兩個線程一定要啓動


server2:

mysql>show slave status\G

    ***************************1. row ***************************

    Slave_IO_State:Waiting for master to send event

    Master_Host:192.168.10.204

    Master_User:tom

    Master_Port:3306

    Connect_Retry:60

    Master_Log_File:master-bin.000003

    Read_Master_Log_Pos:843

    Relay_Log_File:relay-bin.000002

    Relay_Log_Pos:853

    Relay_Master_Log_File:master-bin.000003

    Slave_IO_Running:Yes

    Slave_SQL_Running:Yes



6、在任意一個server創建庫和表並插入內容差可能能否同步:

server1:

mysql> create database linux;

    Query OK, 1 row affected (0.00 sec)

server2:

mysql> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | linux              |

    | mysql              |

    | performance_schema |

    | test               |

    +--------------------+

    5 rows in set (0.04 sec)

mysql> use linux;

    Database changed

mysql> create table t1 (id int);

    Query OK, 0 rows affected (0.16 sec)

mysql> insert into t1 values (1),(2),(3);

    Query OK, 3 rows affected (0.08 sec)

    Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from t1;

    +------+

    | id   |

    +------+

    |    1 |

    |    2 |

    |    3 |

    +------+

    3 rows in set (0.00 sec)

server1:

mysql>  insert into t1 values (4),(5),(6);

    Query OK, 3 rows affected (0.00 sec)

    Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from t1;

    +------+

    | id   |

    +------+

    |    1 |

    |    2 |

    |    3 |

    |    4 |

    |    5 |

    |    6 |

    +------+

    6 rows in set (0.00 sec)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章