1. 程式人生 > >MySQL MHA高可用方案【三、主從複製】

MySQL MHA高可用方案【三、主從複製】

3.1 db01伺服器上的操作

db01是用作Master,所以需要先在上面建立主從複製的帳號

[[email protected] ~]# mysql -uroot -pchenliang -S /data/3306/mysql.sock

mysql>

mysql> GRANT REPLICATION SLAVE ON *.* TO [email protected]'172.16.1.%' IDENTIFIED BY 'chenliang';

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


mysql> select user,host,authentication_string from mysql.user where user='rep' and host='172.16.1.%';

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

| user | host       | authentication_string                     |

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

| rep  | 172.16.1.% | *D072DB593E2E7B068E887A452EB1DB3981A5D844 |

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

1 row in set (0.00 sec)


mysql> flush privileges;

Query OK, 0 rows affected (0.02 sec)

3.2 db02伺服器上的操作

db02伺服器是slave1,需要在上面進行change master並開啟slave。

[

[email protected] ~]# mysql -uroot -pchenliang -S /data/3306/mysql.sock

mysql>

mysql> change master to master_host='172.16.1.11',master_user='rep',master_password='chenliang',master_auto_position=1;

Query OK, 0 rows affected, 2 warnings (0.40 sec)


mysql> start slave;

Query OK, 0 rows affected (0.12 sec)


mysql> show slave status\G

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

Slave_IO_State: Waiting for master to send event

Master_Host: 172.16.1.11

Master_User: rep

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: db01_mysql_bin.000008

Read_Master_Log_Pos: 637

Relay_Log_File: db02_relay_bin.000008

Relay_Log_Pos: 860

Relay_Master_Log_File: db01_mysql_bin.000008

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 637

Relay_Log_Space: 1329

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 11

Master_UUID: 3ad8129b-e7b2-11e8-817e-000c296b2e4b

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: 3ad8129b-e7b2-11e8-817e-000c296b2e4b:1-4

Executed_Gtid_Set: 1386976f-e7b8-11e8-b34b-000c29d359de:1-2,

3ad8129b-e7b2-11e8-817e-000c296b2e4b:1-4

Auto_Position: 1

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)


mysql> select user,host,authentication_string from mysql.user where user='rep' and host='172.16.1.%';

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

| user | host       | authentication_string                     |

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

| rep  | 172.16.1.% | *D072DB593E2E7B068E887A452EB1DB3981A5D844 |

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

1 row in set (0.00 sec)

3.3 db03伺服器上的操作

db03伺服器是slave2,需要在上面進行change master並開啟slave。

[[email protected] ~]# mysql -uroot -pchenliang -S /data/3306/mysql.sock

mysql>

mysql> change master to master_host='172.16.1.11',master_user='rep',master_password='chenliang',master_auto_position=1;

Query OK, 0 rows affected, 2 warnings (0.37 sec)


mysql> start slave;

Query OK, 0 rows affected (0.10 sec)


mysql> show slave status\G

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

Slave_IO_State: Waiting for master to send event

Master_Host: 172.16.1.11

Master_User: rep

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: db01_mysql_bin.000008

Read_Master_Log_Pos: 637

Relay_Log_File: db03_relay_bin.000008

Relay_Log_Pos: 860

Relay_Master_Log_File: db01_mysql_bin.000008

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 637

Relay_Log_Space: 1329

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 11

Master_UUID: 3ad8129b-e7b2-11e8-817e-000c296b2e4b

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: 3ad8129b-e7b2-11e8-817e-000c296b2e4b:1-4

Executed_Gtid_Set: 2d855103-e7ba-11e8-859b-000c29f7a739:1-2,

3ad8129b-e7b2-11e8-817e-000c296b2e4b:1-4

Auto_Position: 1

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)


mysql> select user,host,authentication_string from mysql.user where user='rep' and host='172.16.1.%';

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

| user | host       | authentication_string                     |

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

| rep  | 172.16.1.% | *D072DB593E2E7B068E887A452EB1DB3981A5D844 |

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

1 row in set (0.01 sec)

3.4 db04伺服器上的操作

db04伺服器是slave3,需要在上面進行change master並開啟slave。

[[email protected] ~]# mysql -uroot -pchenliang -S /data/3306/mysql.sock

mysql>

mysql> change master to master_host='172.16.1.11',master_user='rep',master_password='chenliang',master_auto_position=1;

Query OK, 0 rows affected, 2 warnings (0.11 sec)


mysql> start slave;

Query OK, 0 rows affected (0.14 sec)


mysql> show slave status\G

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

Slave_IO_State: Waiting for master to send event

Master_Host: 172.16.1.11

Master_User: rep

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: db01_mysql_bin.000008

Read_Master_Log_Pos: 637

Relay_Log_File: db04_relay_bin.000008

Relay_Log_Pos: 860

Relay_Master_Log_File: db01_mysql_bin.000008

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 637

Relay_Log_Space: 1329

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 11

Master_UUID: 3ad8129b-e7b2-11e8-817e-000c296b2e4b

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: 3ad8129b-e7b2-11e8-817e-000c296b2e4b:1-4

Executed_Gtid_Set: 3ad8129b-e7b2-11e8-817e-000c296b2e4b:1-4,

8a45f06d-e7bb-11e8-93ac-000c29a2ce6e:1-2

Auto_Position: 1

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)


mysql> select user,host,authentication_string from mysql.user where user='rep' and host='172.16.1.%';

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

| user | host       | authentication_string                     |

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

| rep  | 172.16.1.% | *D072DB593E2E7B068E887A452EB1DB3981A5D844 |

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

1 row in set (0.00 sec)

3.5 主庫上建立資料進行測試

#在主庫(db01)上建立chenliang庫:

mysql> system hostname

db01

mysql> create database chenliang;

Query OK, 1 row affected (0.05 sec)


mysql> show databases like "chenliang";

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

| Database (chenliang) |

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

| chenliang |

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

1 row in set (0.00 sec)


#在從庫上檢查是否有chenliang

mysql> system hostname

db02

mysql> show databases like "chenliang";

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

| Database (chenliang) |

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

| chenliang            |

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

1 row in set (0.01 sec)


mysql> system hostname

db03

mysql> show databases like "chenliang";

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

| Database (chenliang) |

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

| chenliang             |

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

1 row in set (0.01 sec)


mysql> system hostname

db04

mysql> show databases like "chenliang";

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

| Database (chenliang) |

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

| chenliang            |

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

1 row in set (0.01 sec)