MySQL資料庫主從同步

來源:互聯網
上載者:User

標籤:

環境描述

主要資料庫master  ip:192.168.1.205:3306

從資料庫slave     ip:192.168.1.206:3306

 

源碼安裝Mysql-5.5.46請移步:http://linuxzkq.blog.51cto.com/9379412/1700082,這裡不在描述

###############################################################################

配置步驟:

a.主要資料庫配置步驟

1、開啟主要資料庫的binlog(二進位日誌功能),並設定server-id

2、建立用於同步資料的帳號rep

3、鎖表並查看當前日誌名稱和位置(pos)

4、備份當前主要資料庫的全部資料(全備)

5、解鎖主要資料庫,讓主要資料庫繼續提供服務

6、繼續往主要資料庫寫資料

 

b.從資料庫配置步驟

1、把主要資料庫備份的全備資料恢複到從資料庫

2、設定從資料庫server-id,並確保這個ID沒有被別的MySQL服務所使用。

3、在從資料庫上設定主從同步的相關資訊,如主要資料庫伺服器的IP地址、連接埠號碼、同步帳號、密碼、binlog檔案名稱、binlog位置(pos)點

4、開始主從同步start slave;

5、查看是否同步成功,show slavestatus\G;

############################################################################

 

 

 

主要資料庫配置:

##################################################################

開啟主要資料庫的binlog(二進位日誌功能),並設定server-id

[[email protected] ~]# vi  /etc/my.cnf

server-id       = 1

log-bin=mysql-bin

[[email protected] ~]# egrep "server-id|log-bin" /etc/my.cnf

server-id       = 1

log-bin=mysql-bin

################################################################## 

重啟資料庫

[[email protected] ~]# service mysqld restart

Shutting down MySQL.......... SUCCESS!

Starting MySQL.......... SUCCESS!

[[email protected] ~]# netstat -tunlp|grep mysqld

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      16530/mysqld 

[[email protected] ~]# lsof -i:3306

COMMAND   PID  USER  FD   TYPE DEVICE SIZE/OFF NODENAME

mysqld      16530 mysql 11u  IPv4  52627     0t0  TCP *:mysql (LISTEN)

################################################################## 

查看是否記錄二進位日誌

[[email protected] ~]# ll /application/data/mysql-bin.000001

-rw-rw----. 1 mysql mysql 2629 Oct  2 15:35 /application/data/mysql-bin.000001  #有此檔案,證明在記錄二進位日誌

################################################################## 

主要資料庫中建立測試用的資料庫和表

mysql> create database test;

Query OK, 1 row affected (0.02 sec)

mysql> use test;

Database changed

mysql> create table test(id int(3),namechar(10));

Query OK, 0 rows affected (0.14 sec)

mysql> insert into test values(001,‘mytest‘);

Query OK, 1 row affected (0.14 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.02 sec)

################################################################## 

查看是否開啟binlog(二進位日誌功能)

mysql> show variables like ‘log_bin‘;

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

| Variable_name | Value |

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

| log_bin     | ON   |

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

1 row in set (0.00 sec)

##################################################################  

建立用於同步資料的帳號rep

mysql> grant replication slave on *.* to ‘rep‘@‘192.168.1.%‘identified by ‘rep123456‘;

mysql> flush privileges;

mysql> select user,host from mysql.user;                

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

| user | host      |

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

| root | 127.0.0.1   |

| rep  | 192.168.1.% |

| root | localhost   |

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

3 rows in set (0.04 sec)

##################################################################

鎖表

mysql> flush table withread lock; 

Query OK, 0 rows affected (0.00 sec)

##################################################################

查看當前二進位日誌名稱和位置(pos)

mysql> show master status;

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

| File         | Position | Binlog_Do_DB |Binlog_Ignore_DB |

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

| mysql-bin.000001 |    107 |         |             |

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

1 row in set (0.03 sec)

##################################################################

備份當前主要資料庫的資料

[[email protected] ~]# mysqldump-uroot  -p87003891214 -A -B -F--master-data=2 --events | gzip > /tmp/mysql_bak.$(date +%F).sql.gz 

[[email protected] ~]# ll /tmp

total 156

drwxrwxrwt. 2 tomcat tomcat   4096 Oct 2 09:33 hsperfdata_tomcat

-rw-r--r--. 1 root   root  151317 Oct  2 20:08mysql_bak.2015-10-02.sql.gz

-rwxrwxrwt. 1 root   root       0 Aug 13 11:55 yum.log

解鎖主要資料庫

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

################################################################## 

 

 

從資料庫配置:

######################################################

把主要資料庫備份的全備資料恢複到從資料庫

 

[[email protected] ~]# scp /tmp/[email protected]:~

[email protected]‘s password:

mysql_bak.2015-10-02.sq 100% 148KB 147.8KB/s   00:00

[[email protected] ~]# ll mysql_bak.2015-10-02.sql.gz

-rw-r--r--. 1 root root 151317 Aug 19 07:37 mysql_bak.2015-10-02.sql.gz

[[email protected] ~]# gzip -d mysql_bak.2015-10-02.sql.gz

[[email protected] ~]# mysql -uroot -p87003891214 < mysql_bak.2015-10-02.sql

[[email protected] ~]# mysql -uroot -p87003891214 -e "showdatabases;"

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

| Database        |

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

| information_schema |

| mysql         |

| performance_schema |

| test          |

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

[[email protected] ~]# mysql -uroot -p87003891214 -e "usetest;select * from test;"       

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

| id   | name  |

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

|    1 | mytest|

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

###############################################################

設定從資料庫server-id,並確保這個ID沒有被別的MySQL服務所使用

[[email protected] ~]# vi /etc/my.cnf

server-id       = 2

[[email protected] ~]# grep "server-id" /etc/my.cnf

server-id       = 2

##############################################################

在從資料庫上設定主從同步的相關資訊,如主要資料庫伺服器的IP地址、連接埠號碼、同步帳號、密碼、binlog檔案名稱、binlog位置(pos)點

mysql> CHANGE MASTER TO

MASTER_HOST=‘192.168.1.205‘,

MASTER_PORT=3306,

MASTER_USER=‘rep‘,

MASTER_PASSWORD=‘rep123456‘,

MASTER_LOG_FILE=‘mysql-bin.000001‘,

MASTER_LOG_POS=107;

#############################################################

開始主從同步start slave;

mysql> start slave;

查看是否同步成功,show slave status\G;

mysql> show  slavestatus\G;

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

Slave_IO_State: Waiting formaster to send event

Master_Host: 192.168.1.205

Master_User: rep

Master_Port: 3306

Connect_Retry: 60

Master_Log_File:mysql-bin.000008

Read_Master_Log_Pos: 107

Relay_Log_File:web2-relay-bin.000014

Relay_Log_Pos: 253

Relay_Master_Log_File: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: 107

Relay_Log_Space: 451

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: 1

1 row in set (0.01 sec)

 

ERROR:

No query specified

其中Slave_IO_Running 與 Slave_SQL_Running 的值都必須為YES,代表主從同步成功了。

#############################################################

繼續往test表中插入資料

mysql> use test;

Database changed

mysql> insert into test values(002,‘mytest2‘);

Query OK, 1 row affected (0.01 sec)

 

mysql> insert into test values(003,‘mytest3‘);

Query OK, 1 row affected (0.05 sec)

 

mysql> insert into test values(004,‘mytest4‘);

Query OK, 1 row affected (0.04 sec)

 

查看從資料庫的表

 

mysql> use test;

Database changed

mysql> select * from test;

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

| id   | name   |

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

|    1 | mytest |

|    2 | mytest2 |

|    3 | mytest3 |

|    4 | mytest4 |

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

4 rows in set (0.00 sec)

 

MySQL資料庫主從同步

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.