麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

mysql 5.6.14主從復制(也稱mysql AB復制)環境配置方法

2020-01-18 22:30:48
字體:
來源:轉載
供稿:網友

一、mysql主(稱master)從(稱slave)復制的原理:

      (1).master將數據改變記錄到二進制日志(binary log)中,也即是配置文件log-bin指定的文件(這些記錄叫做二進制日志事件,binary log events)
      (2).slave將master的binary log events拷貝到它的中繼日志(relay log)
      (3).slave重做中繼日志中的事件,將改變反映它自己的數據(數據重演)

附簡要原理圖:

二、mysql主從復制支持的類型:

    (1).基于語句的復制:在主服務器上執行的SQL語句,在從服務器上執行同樣的語句.MySQL默認采用基于語句的復制,效率比較高

word-spacing: 0px">   (2).基于行的復制:把改變的內容直接復制過去,而不關心到底改變該內容是由哪條語句引發的 . 從mysql5.0開始支持
word-spacing: 0px">   (3).混合類型的復制: 默認采用基于語句的復制,一旦發現基于語句的無法精確的復制時,就會采用基于行的復制.

三、主從配置需要注意的地方:

   (1).主DB server和從DB server數據庫的版本一致
   (2).主DB server和從DB server數據庫數據一致[ 這里就會可以把主的備份在從上還原,也可以直接將主的數據目錄拷貝到從的相應數據目錄]
   (3).主DB server開啟二進制日志,主DB server和從DB server的server_id都必須唯一

四、主從配置的簡要步驟:

附簡要示意圖:

1.主DB SERVER上的配置

   (1).安裝數據庫
   (2).修改數據庫配置文件,指明server_id,開啟二進制日志(log-bin)
   (3).啟動數據庫,查看當前是哪個日志,position號是多少
   (4).登陸數據庫,授權用戶[ip地址為從機IP地址,如果是雙向主從,這里的還需要授權本機的IP地址(此時自己的IP地址就是從IP地址)]
   (5).備份數據庫[記得加鎖和解鎖]
   (6).傳送備份到從DB server上
   (7).啟動數據庫

以下步驟,為單向主從搭建成功,想搭建雙向主從需要的步驟:

   (1).登陸數據庫,指定主DB server的地址,用戶,密碼等信息[此步僅雙向主從時,需要]

   (2).開啟同步,查看狀態

2.從DB SERVER上的配置

  (1).安裝數據庫
  (2).修改數據庫配置文件,指明server_id[如果是搭建雙向主從的話,也要開啟二進制日志(log-bin)]
  (3).啟動數據庫,還原備份
  (4).查看當前是哪個日志,position號是多少[單向主從此步不需要,雙向主從需要]
  (5).指定主DB server的地址,用戶,密碼等信息
  (6).開啟同步,查看狀態

五、單向主從環境[也稱 mysql A/B復制]的搭建案例:

1.主DB server和從DB server都安裝相應版本的數據庫,我的兩臺DB server都已經安裝好(5.6.14版本),都會是雙實例,這里就不演示安裝,可以參考mysql源碼編譯安裝和mysql多實例配置兩篇文章
注:兩臺機器的的selinux都是disable(永久關閉selinux,請修改/etc/selinux/config,將SELINUX改為disabled),防火墻可以選擇關閉,開啟的話也行[不行的話,添加防火墻策略]
2.修改主DB server的配置文件(/etc/my.cnf),開啟日志功能,設置server_id值,保證唯一[client102為主DB server]

[root@client102 scripts]# vim /etc/my.cnf # 修改配置文件里,下面兩個參數: # 設置server_id,一般建議設置為IP,或者再加一些數字 server_id =102# 開啟二進制日志功能,可以隨便取,最好有含義 log-bin=mysql3306-bin

3.啟動數據庫服務器,并登陸數據庫,授予相應的用戶用于同步

# 我這里是多實例mysql,所以啟動是這樣的,如果大家是單實例的,就直接啟動就可以[/etc/init.d/mysqld start] [root@client102 scripts]# mysqld_multi start 3306 # 登陸mysql 服務器 [root@client102 scripts]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p # 授予用戶權限用于主從同步 mysql> grant replication slave on *.* to 'kongzhong'@'192.168.1.100' identified by 'kongzhong'; Query OK, 0 rows affected (0.00 sec) # 刷新授權表信息 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) # 查看position 號,記下position 號(很重要,從機上需要這個position號和現在的日志文件,我這里是414和mysql3306-bin.000001) mysql> show master status; +----------------------+----------+--------------+------------------+-------------------+| File         | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +----------------------+----------+--------------+------------------+-------------------+| mysql3306-bin.000001 |   414 |       |         |          | +----------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)

4.為保證主DB server和從DB server的數據一致,這里采用主備份,從還原來實現初始數據一致

復制代碼 代碼如下:

# 臨時鎖表
mysql> flush tables with read lock;
# 我這里實行的全庫備份,在實際中,我們可能只同步某一個庫,可以只備份一個庫
# 新開一個終端,執行如下操作
[root@client102 data]# mysqldump  -p3306 -uroot -p  -S /usr/local/mysql/mysqld3306.sock  --all-databases > /tmp/mysql.sql
# 解鎖
mysql> unlock tables;
# 將備份的數據傳送到從機上,用于恢復
 [root@client102 data]# scp  /tmp/mysql.sql  [email protected]:/tmp

5.從DB server配置文件只需修改一項,其余用命令行做

復制代碼 代碼如下:

[root@client100 ~]# vim /etc/my.cnf
# 設置server_id,一般建議設置為IP,或者再加一些數字
server_id =100

6.啟動數據庫,還原備份數據

復制代碼 代碼如下:

# 啟動數據庫
[root@client100 ~]# mysqld_multi start 3306
# 還原主DB server備份的數據
[root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p < /tmp/mysql.sql

7.登陸數據庫,添加相關參數(主DBserver的ip/端口/同步用戶/密碼/position號/讀取哪個日志文件)

復制代碼 代碼如下:

[root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p
mysql> change master to
    -> master_host='192.168.1.102',
    -> master_user='kongzhong',
    -> master_password='kongzhong',
    -> master_port=3306,
    -> master_log_file='mysql3306-bin.000001',
    -> master_log_pos=414;
#/*  下面是一部分注解:
#/*  指定主DB server的IP地址
master_host='192.168.1.102'
#/*  指定用于同步的用戶[這個就是我們在主DB server授權的用戶]
master_user='kongzhong'
#/* 指定用于同步的用戶的密碼
master_password='kongzhong'
#/* 指定主DB server的端口[下面一個例子,可以重點看這個]
master_port=3306
#/*  指定從DB server 從哪個日志文件開始讀[在主DB server上使用show master status查看到日志]
master_log_file='mysql3306-bin.000001'
#/*  指定 從哪個POSITION號開始讀
master_log_pos=414
# 開啟主從同步
mysql> start slave;
# 查看主從同步狀態
mysql> show slave status/G;
# 主要看以下兩個參數:[這兩個參數如果是yes就表示主從同步正常]
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

8.下面大家就可以在主DB server上新建一個表,看是否能同步到從DB server上,我這里就不測試了

[注:千萬不要在從DB server手動插入數據,那樣數據就不一致,主從就會斷開,需要重新配置了]

如果有問題,可以嘗試關閉IPTABLES(/etc/init.d/iptables stop)和selinux(setenforce 0:臨時關閉selinux,永久關閉selinux,請修改/etc/selinux/config,將SELINUX改為disabled)

9.上面所搭建的是單向主從,也是用的比較多的,有人想了解雙向主從是如何搭建,其實,就是主DB server和從DB sever都開啟日志功能,然后在主DB SERVER執行授權用戶[這里授權的是自己作為從服務器,也就是這里的IP地址是主DB server的IP地址],然后再在主DB server上進行chang master操作.有不理解的可以留言詢問.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久999| 中文欧美日韩 | 久久网国产 | 中文字幕国| 久久国产精品小视频 | 欧美成人视 | 亚洲一区二区中文字幕在线观看 | 黄色毛片免费看 | 欧美日韩专区国产精品 | 女教师~淫辱の动漫在线 | 色999久久久精品人人澡69 | 看毛片的网址 | 日韩在线激情 | 欧美中文字幕一区二区三区亚洲 | 成人福利在线看 | 亚洲精品v天堂中文字幕 | 91小视频在线观看免费版高清 | 一级啪啪片| 九九热在线精品视频 | 国产精品观看在线亚洲人成网 | 日本高清在线免费 | 亚洲精品 在线播放 | 国产中出在线观看 | 毛片在哪里看 | 久久国产一二区 | 久久精品99国产国产精 | 国产精品久久久久久婷婷天堂 | 日韩精品免费一区二区三区 | 亚洲欧美成aⅴ人在线观看 免费看欧美黑人毛片 | 99国产精成人午夜视频一区二区 | 欧美性激情视频 | 777zyz色资源站在线观看 | 国产成人高清成人av片在线看 | 天天草天天爱 | 精品国产欧美一区二区 | 伊人成人免费视频 | 九九热精品在线 | 欧美一级做a | 污视频在线免费播放 | 97人人草 | 911精品影院在线观看 |