日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

mysql主从库配置ps:mysql5.6

發布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql主从库配置ps:mysql5.6 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1?Mysql cluster版本主從服務器搭建實踐

?

主從的作用:MySQL的主從服務器可以滿足同步數據庫,同步表,同步表內容,也可以指定僅同步某個數據庫或某個表,還可以排除不同步某個數據庫某個表。

同步原理:主從數據庫同步主要是通過二進制日志來實現同步的。

mysql官網下載最新版本:dev.mysql.com

本文環境:

mysql服務器:10.1.68.110

安裝版本:mysql-cluster-gpl-7.0.35-linux-x86_64-glibc23.tar.gz

mysql服務器:10.1.68.102

安裝版本:mysql-cluster-gpl-7.0.35-linux-x86_64-glibc23.tar.gz

注意:最好是主從服務器采用相同版本,若不行,建議從服務器版本高于主服務器版本。

另外mysql-5.6.10版本的主從配置與mysql-cluster版本不同,主要是my.cnf配置文件不同,start slave命令也不同,要注意。

本文章兩種版本的配置都有記錄。

1.1?配置主mysql服務器

?

1.???????安裝主mysql步驟(參考tar包中的INSTALL-BINARY文件即可,很簡單)

shell> groupadd mysql

shell> useradd -r -g mysql mysql

shell> tar zxf??mysql-cluster-gpl-7.2.9-linux2.6-x86_64.tar.gz

shell> mv mysql-cluster-gpl-7.2.9-linux2.6-x86_64 /opt/mysql-master

shell> cd /opt/mysql-master

shell> chown -R mysql.mysql *

shell> scripts/mysql_install_db --user=mysql

shell> chown -R root .

shell> chown -R mysql data

# Next command is optional

shell> cp support-files/my-medium.cnf /etc/my.cnf

shell> bin/mysqld_safe &

若啟動失敗,再次嘗試一下執行scripts/mysql_install_db --user=mysql命令后在啟動。

# Next command is optional,成功啟動了mysqld之后才會生成下面的腳本文件

shell> cp support-files/mysql.server /etc/init.d/mysql.server

2.???????配置主的my.cnf文件(基本上不需要任何配置,默認都有了)

# vi /etc/my.cnf

關鍵性的配置

log-bin=mysql-bin

server-id???= 1

binlog-do-db=icinga

binlog-do-db=DB2?????如果備份多個數據庫,重復設置這個選項即可

binlog-do-db=DB3??//需要同步的數據庫,如果沒有本行,即表示同步所有的數據庫

binlog-ignore-db=mysql??//被忽略的數據庫

保存退出

3.???????唯一要做的就是創建允許從服務器訪問的帳號backup

mysql> grant replication slave on *.* to 'backup'@'10.1.68.102' identified by'1234qwer';

Query OK, 0 rows affected (0.00 sec)

若有多臺從服務器,就將ip修改一下執行多次就可以了。

4.???????重啟主機的mysql服務。

1.2?配置從mysql服務器

?

1.?????????安裝主mysql步驟(參考tar包中的INSTALL-BINARY文件即可,很簡單)

2.?????????配置從機的/etc/my.cnf文件

關鍵性的配置

log-bin=mysql-bin

server-id???????= 2

master-host?????=???10.1.68.110

master-user?????=???backup

master-password =???1234qwer

master-port?????=??3306

replicate-do-db=icinga

replicate-do-db=DB2

binlog-do-db=DB3??//需要同步的數據庫,如果沒有本行,即表示同步所有的數據庫

binlog-ignore-db=mysql??//被忽略的數據庫

保存退出

3.?????????重啟從機的mysql服務,基本的從機配置完成。

4.?????????若從服務器的偏移量與主機不同,手動修改偏移量

1)先查看主機的狀態信息

mysql> show master status;

?

2)登錄從機按照主的Position修改從機的Position

mysql> slave stop;

mysql>?change master to master_host='10.1.68.110',master_user='backup',master_password='1234qwer',master_log_file='mysql-bin.000011',master_log_pos=62291;

mysql> slave start;

?

1.3??驗證同步

?

1.?????????icinga數據庫中創建一個表并插入數據

mysql> create table abc(id int,name char(10));

Query OK, 0 rows affected (0.40 sec)

mysql> insert into abc values(1,'shenxiaoran');

Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> select * from abc;

?

?

2.?????????查看從mysql服務器,表及內容是否都同步過來

mysql> show tables;

?

再查看表內容,數據也都同步了,如下圖

?

至此,mysql數據庫主從同步完成。

?

1.4?常用主從同步的命令

?

1.4.1?主服務器常用命令

1.???????查看主機狀態和Position信息,用來讓slave機與master保持一致。

mysql> show master status;

1.4.2?從服務器常用命令

mysql> show slave status;

mysql> slave stop;

mysql> slave start;

mysql> show processlist;

2?Mysql-5.6.10版本主從數據庫的搭建

?

部署環境:

OS: CentOS release 6.3 (Final)

mysql-master服務器:192.168.123.75

安裝版本:mysql-5.6.10.tar.gz?源碼包

mysql-slave服務器:192.168.123.105

安裝版本:mysql-5.6.10.tar.gz?源碼包

2.1?分別安裝主從mysql-mastermysql-slave服務器

?

mysql5.6.10.tar.gz是截至2013410mysql官網的最新的源碼包版本,該版本的安裝方法與傳統的mysql安裝方法不同,安裝前必須手動安裝cmake

cmake官網下載:http://cmake.org/cmake/resources/software.html

./bootstrap

make

make install

接下來,安裝mysql,我這里寫了一個自動安裝的shell腳本

?

2.2?配置主mysql-master服務器

?

Mysql-5.6.10版本的my.cnf文件默認什么參數都沒有,需要自己配

# vi /etc/my.cnf

關鍵性的配置

log-bin = mysql-bin

# These are commonly set, remove the # and set as required.

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

server_id = 106?//?注意新版本用的是下劃線

socket = /tmp/mysql.sock

bind-address = 0.0.0.0 //這里綁定監聽0.0.0.0:3306,默認是:::3306

binlog-do-db = cacti??//如果備份多個數據庫,重復添加即可,若沒有表示備份所有數據庫

binlog-do-db = db2

binlog-ignore-db = mysql??//被忽略的數據庫,不做復制

保存退出

5.???????唯一要做的就是創建允許從服務器訪問的帳號mysync

mysql> grant replication slave on *.* to 'mysync'@'192.168.123.105' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

若有多臺從服務器,就將ip修改一下執行多次就可以了。

6.???????重啟主機的mysql服務。

從機測試連接到主mysql

# bin/mysql -h 192.168.123.75 -u mysync -p123456

mysql>

測試成功連接。

2.3?配置從mysql-slave服務器

?

# vi /etc/my.cnf

log_bin = mysql-bin

server_id = 107

注意,下面的參數不能再使用了,否則導致mysql無法啟動

master-host = 10.1.68.110

master-user = backup

master-password = 1234qwer

master-port = 3306

1.???????登錄主服務器的mysql,查詢master的狀態

mysql> show master status;

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

| File?????????????| Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000002 |??????120 | cacti????????| mysql????????????|???????????????????|

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

1 row in set (0.00 sec)

注:執行完此步驟后不要再操作主服務器MYSQL,防止主服務器狀態值變化

2.???????登錄從mysql服務器,配置binary log文件和Position(其實就是主的binary log文件的大小)與主一致。

mysql> change master to master_host='192.168.123.75',master_user='mysync',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=120;

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

mysql> start slave;

Query OK, 0 rows affected (0.01 sec)

3.???????查看從mysql服務器的狀態

mysql> show slave status;

重點是查看?Slave_IO_Running | Slave_SQL_Running

如果出現的結果是Yes??????????????| Yes

說明mysql主從配置成功完成了。

?

2.4?測試主從服務器同步

?

1.??將備份后的數據庫導入到主mysql服務器中,查看從mysql服務器是否會同步。

# bin/mysql < /root/cacti_sql_bak

2.??查看從mysql服務器的數據庫是否有更新

mysql> show databases;

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

| Database???????????|

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

| information_schema |

| cacti??????????????|

| mysql??????????????|

| performance_schema |

| test???????????????|

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

5 rows in set (0.01 sec)

從上面看到主mysql服務器的數據庫還未全部導入完成,從mysql服務器已經開始同步了。

?

3??FAQ

?

3.1?show slave status命令的結果查看正常,卻依然無法看到同步的數據庫,原因在哪?

?

mysql> show slave status;?執行后部分結果如下

Slave_IO_State:Waiting for master to send event

Slave_IO_Running:Yes

Slave_SQL_Running:Yes

查看數據庫卻依然無法同步,原因在哪里?

解決辦法:

1)?嘗試重啟master數據庫;

2)?在重啟slave數據庫之前,必須先刪除data目錄下的master.info文件,因為master.info記錄了上次要連接主庫的信息,如果不刪除,即使my.cnf里進行了修改,手動修改Position(偏移量)也還是同步不了,因為讀取的還是偏移量出錯時的master.info文件信息。

# rm -f data/master.info

# support-files/mysql.server start

Starting MySQL.???????????[??OK??]

再次查看slave,同步終于成功了。

mysql> show processlist;

id|User??????????|Host|db??????|Command??|Time??????|state

1|?system user |???????|?NULL???| Connect |1196 | Waiting for master to send event

2 | system user |????| NULL???| Connect |-55692 | Slave has read all relay log; waiting for the slave I/O thread to

3 | root???|localhost|icinga| Query|??0 |NULL | show processlist

3.2?show slave status命令的結果出現下面的異常情況,如何解決?

?

執行mysql> show slave status;命令,看到下面的顯示結果

Slave_IO_Running:Connecting

Slave_SQL_Running:Yes?

看到上面的問題,說明是從服務器無法正常連接到主服務器導致。原因一般和下面幾種情況有關:

l??Iptables防護墻阻止了3306端口

l??主mysql服務器的grant授權命令有誤

l??主mysql服務器的監聽端口不是0.0.0.0:3306,導致別的服務器無法連接到主mysql

解決辦法:

首先,關閉了iptables;

然后,檢查主mysql服務器的grant授權命令,正確無誤,這一點排除。

其次,查看主mysql的監聽端口,默認是:::3306,不知道是否因為這個問題導致

修改主服務器的my.cnf文件,添加下面語句

bind-address = 0.0.0.0

重啟mysq.server服務

再次netstat –an|more?查看3306端口,出現了0.0.0.0:3306,說明修改成功。

登錄到從mysql服務器上,遠程連接

# bin/mysql -h 192.168.123.75 -umysync -p123456

Your MySQL connection id is 8

Server version: 5.6.10-log Source distribution

mysql>

連接成功。

最后重新執行主從操作:

主mysql服務器:mysql> show master status;

從mysql服務器:mysql> stop slave;

從mysql服務器:mysql> change master to……;

從mysql服務器:mysql> start slave;

從mysql服務器:mysql> show slave status;

Slave_IO_Running:Yes

Slave_SQL_Running:Yes?

?

再次測試主從同步,成功。

1?Mysql cluster版本主從服務器搭建實踐

?

主從的作用:MySQL的主從服務器可以滿足同步數據庫,同步表,同步表內容,也可以指定僅同步某個數據庫或某個表,還可以排除不同步某個數據庫某個表。

同步原理:主從數據庫同步主要是通過二進制日志來實現同步的。

mysql官網下載最新版本:dev.mysql.com

本文環境:

mysql服務器:10.1.68.110

安裝版本:mysql-cluster-gpl-7.0.35-linux-x86_64-glibc23.tar.gz

mysql服務器:10.1.68.102

安裝版本:mysql-cluster-gpl-7.0.35-linux-x86_64-glibc23.tar.gz

注意:最好是主從服務器采用相同版本,若不行,建議從服務器版本高于主服務器版本。

另外mysql-5.6.10版本的主從配置與mysql-cluster版本不同,主要是my.cnf配置文件不同,start slave命令也不同,要注意。

本文章兩種版本的配置都有記錄。

1.1?配置主mysql服務器

?

1.???????安裝主mysql步驟(參考tar包中的INSTALL-BINARY文件即可,很簡單)

shell> groupadd mysql

shell> useradd -r -g mysql mysql

shell> tar zxf??mysql-cluster-gpl-7.2.9-linux2.6-x86_64.tar.gz

shell> mv mysql-cluster-gpl-7.2.9-linux2.6-x86_64 /opt/mysql-master

shell> cd /opt/mysql-master

shell> chown -R mysql.mysql *

shell> scripts/mysql_install_db --user=mysql

shell> chown -R root .

shell> chown -R mysql data

# Next command is optional

shell> cp support-files/my-medium.cnf /etc/my.cnf

shell> bin/mysqld_safe &

若啟動失敗,再次嘗試一下執行scripts/mysql_install_db --user=mysql命令后在啟動。

# Next command is optional,成功啟動了mysqld之后才會生成下面的腳本文件

shell> cp support-files/mysql.server /etc/init.d/mysql.server

2.???????配置主的my.cnf文件(基本上不需要任何配置,默認都有了)

# vi /etc/my.cnf

關鍵性的配置

log-bin=mysql-bin

server-id???= 1

binlog-do-db=icinga

binlog-do-db=DB2?????如果備份多個數據庫,重復設置這個選項即可

binlog-do-db=DB3??//需要同步的數據庫,如果沒有本行,即表示同步所有的數據庫

binlog-ignore-db=mysql??//被忽略的數據庫

保存退出

3.???????唯一要做的就是創建允許從服務器訪問的帳號backup

mysql> grant replication slave on *.* to 'backup'@'10.1.68.102' identified by'1234qwer';

Query OK, 0 rows affected (0.00 sec)

若有多臺從服務器,就將ip修改一下執行多次就可以了。

4.???????重啟主機的mysql服務。

1.2?配置從mysql服務器

?

1.?????????安裝主mysql步驟(參考tar包中的INSTALL-BINARY文件即可,很簡單)

2.?????????配置從機的/etc/my.cnf文件

關鍵性的配置

log-bin=mysql-bin

server-id???????= 2

master-host?????=???10.1.68.110

master-user?????=???backup

master-password =???1234qwer

master-port?????=??3306

replicate-do-db=icinga

replicate-do-db=DB2

binlog-do-db=DB3??//需要同步的數據庫,如果沒有本行,即表示同步所有的數據庫

binlog-ignore-db=mysql??//被忽略的數據庫

保存退出

3.?????????重啟從機的mysql服務,基本的從機配置完成。

4.?????????若從服務器的偏移量與主機不同,手動修改偏移量

1)先查看主機的狀態信息

mysql> show master status;

?

2)登錄從機按照主的Position修改從機的Position

mysql> slave stop;

mysql>?change master to master_host='10.1.68.110',master_user='backup',master_password='1234qwer',master_log_file='mysql-bin.000011',master_log_pos=62291;

mysql> slave start;

?

1.3??驗證同步

?

1.?????????icinga數據庫中創建一個表并插入數據

mysql> create table abc(id int,name char(10));

Query OK, 0 rows affected (0.40 sec)

mysql> insert into abc values(1,'shenxiaoran');

Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> select * from abc;

?

?

2.?????????查看從mysql服務器,表及內容是否都同步過來

mysql> show tables;

?

再查看表內容,數據也都同步了,如下圖

?

至此,mysql數據庫主從同步完成。

?

1.4?常用主從同步的命令

?

1.4.1?主服務器常用命令

1.???????查看主機狀態和Position信息,用來讓slave機與master保持一致。

mysql> show master status;

1.4.2?從服務器常用命令

mysql> show slave status;

mysql> slave stop;

mysql> slave start;

mysql> show processlist;

2?Mysql-5.6.10版本主從數據庫的搭建

?

部署環境:

OS: CentOS release 6.3 (Final)

mysql-master服務器:192.168.123.75

安裝版本:mysql-5.6.10.tar.gz?源碼包

mysql-slave服務器:192.168.123.105

安裝版本:mysql-5.6.10.tar.gz?源碼包

2.1?分別安裝主從mysql-mastermysql-slave服務器

?

mysql5.6.10.tar.gz是截至2013410mysql官網的最新的源碼包版本,該版本的安裝方法與傳統的mysql安裝方法不同,安裝前必須手動安裝cmake

cmake官網下載:http://cmake.org/cmake/resources/software.html

./bootstrap

make

make install

接下來,安裝mysql,我這里寫了一個自動安裝的shell腳本

?

2.2?配置主mysql-master服務器

?

Mysql-5.6.10版本的my.cnf文件默認什么參數都沒有,需要自己配

# vi /etc/my.cnf

關鍵性的配置

log-bin = mysql-bin

# These are commonly set, remove the # and set as required.

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

server_id = 106?//?注意新版本用的是下劃線

socket = /tmp/mysql.sock

bind-address = 0.0.0.0 //這里綁定監聽0.0.0.0:3306,默認是:::3306

binlog-do-db = cacti??//如果備份多個數據庫,重復添加即可,若沒有表示備份所有數據庫

binlog-do-db = db2

binlog-ignore-db = mysql??//被忽略的數據庫,不做復制

保存退出

5.???????唯一要做的就是創建允許從服務器訪問的帳號mysync

mysql> grant replication slave on *.* to 'mysync'@'192.168.123.105' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

若有多臺從服務器,就將ip修改一下執行多次就可以了。

6.???????重啟主機的mysql服務。

從機測試連接到主mysql

# bin/mysql -h 192.168.123.75 -u mysync -p123456

mysql>

測試成功連接。

2.3?配置從mysql-slave服務器

?

# vi /etc/my.cnf

log_bin = mysql-bin

server_id = 107

注意,下面的參數不能再使用了,否則導致mysql無法啟動

master-host = 10.1.68.110

master-user = backup

master-password = 1234qwer

master-port = 3306

1.???????登錄主服務器的mysql,查詢master的狀態

mysql> show master status;

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

| File?????????????| Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000002 |??????120 | cacti????????| mysql????????????|???????????????????|

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

1 row in set (0.00 sec)

注:執行完此步驟后不要再操作主服務器MYSQL,防止主服務器狀態值變化

2.???????登錄從mysql服務器,配置binary log文件和Position(其實就是主的binary log文件的大小)與主一致。

mysql> change master to master_host='192.168.123.75',master_user='mysync',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=120;

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

mysql> start slave;

Query OK, 0 rows affected (0.01 sec)

3.???????查看從mysql服務器的狀態

mysql> show slave status;

重點是查看?Slave_IO_Running | Slave_SQL_Running

如果出現的結果是Yes??????????????| Yes

說明mysql主從配置成功完成了。

?

2.4?測試主從服務器同步

?

1.??將備份后的數據庫導入到主mysql服務器中,查看從mysql服務器是否會同步。

# bin/mysql < /root/cacti_sql_bak

2.??查看從mysql服務器的數據庫是否有更新

mysql> show databases;

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

| Database???????????|

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

| information_schema |

| cacti??????????????|

| mysql??????????????|

| performance_schema |

| test???????????????|

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

5 rows in set (0.01 sec)

從上面看到主mysql服務器的數據庫還未全部導入完成,從mysql服務器已經開始同步了。

?

3??FAQ

?

3.1?show slave status命令的結果查看正常,卻依然無法看到同步的數據庫,原因在哪?

?

mysql> show slave status;?執行后部分結果如下

Slave_IO_State:Waiting for master to send event

Slave_IO_Running:Yes

Slave_SQL_Running:Yes

查看數據庫卻依然無法同步,原因在哪里?

解決辦法:

1)?嘗試重啟master數據庫;

2)?在重啟slave數據庫之前,必須先刪除data目錄下的master.info文件,因為master.info記錄了上次要連接主庫的信息,如果不刪除,即使my.cnf里進行了修改,手動修改Position(偏移量)也還是同步不了,因為讀取的還是偏移量出錯時的master.info文件信息。

# rm -f data/master.info

# support-files/mysql.server start

Starting MySQL.???????????[??OK??]

再次查看slave,同步終于成功了。

mysql> show processlist;

id|User??????????|Host|db??????|Command??|Time??????|state

1|?system user |???????|?NULL???| Connect |1196 | Waiting for master to send event

2 | system user |????| NULL???| Connect |-55692 | Slave has read all relay log; waiting for the slave I/O thread to

3 | root???|localhost|icinga| Query|??0 |NULL | show processlist

3.2?show slave status命令的結果出現下面的異常情況,如何解決?

?

執行mysql> show slave status;命令,看到下面的顯示結果

Slave_IO_Running:Connecting

Slave_SQL_Running:Yes?

看到上面的問題,說明是從服務器無法正常連接到主服務器導致。原因一般和下面幾種情況有關:

l??Iptables防護墻阻止了3306端口

l??主mysql服務器的grant授權命令有誤

l??主mysql服務器的監聽端口不是0.0.0.0:3306,導致別的服務器無法連接到主mysql

解決辦法:

首先,關閉了iptables;

然后,檢查主mysql服務器的grant授權命令,正確無誤,這一點排除。

其次,查看主mysql的監聽端口,默認是:::3306,不知道是否因為這個問題導致

修改主服務器的my.cnf文件,添加下面語句

bind-address = 0.0.0.0

重啟mysq.server服務

再次netstat –an|more?查看3306端口,出現了0.0.0.0:3306,說明修改成功。

登錄到從mysql服務器上,遠程連接

# bin/mysql -h 192.168.123.75 -umysync -p123456

Your MySQL connection id is 8

Server version: 5.6.10-log Source distribution

mysql>

連接成功。

最后重新執行主從操作:

主mysql服務器:mysql> show master status;

從mysql服務器:mysql> stop slave;

從mysql服務器:mysql> change master to……;

從mysql服務器:mysql> start slave;

從mysql服務器:mysql> show slave status;

Slave_IO_Running:Yes

Slave_SQL_Running:Yes?

再次測試主從同步,成功。

轉載于:https://www.cnblogs.com/shininguang/p/5438035.html

總結

以上是生活随笔為你收集整理的mysql主从库配置ps:mysql5.6的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。