<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      目錄:

      mysql主從同步定義

           主從同步機制

      配置主從同步

           配置主服務器

           配置從服務器

      使用主從同步來備份

           使用mysqldump來備份

           備份原始文件

      主從同步的小技巧

      排錯

           Slave_IO_Running: NO

           Slave_SQL_Running: No

       

       

      mysql主從同步定義

      主從同步使得數據可以從一個數據庫服務器復制到其他服務器上,在復制數據時,一個服務器充當主服務器(master),其余的服務器充當從服務器(slave)。因為復制是異步進行的,所以從服務器不需要一直連接著主服務器,從服務器甚至可以通過撥號斷斷續(xù)續(xù)地連接主服務器。通過配置文件,可以指定復制所有的數據庫,某個數據庫,甚至是某個數據庫上的某個表。

      使用主從同步的好處:

      1. 通過增加從服務器來提高數據庫的性能,在主服務器上執(zhí)行寫入和更新,在從服務器上向外提供讀功能,可以動態(tài)地調整從服務器的數量,從而調整整個數據庫的性能。
      2. 提高數據安全-因為數據已復制到從服務器,從服務器可以終止復制進程,所以,可以在從服務器上備份而不破壞主服務器相應數據
      3. 在主服務器上生成實時數據,而在從服務器上分析這些數據,從而提高主服務器的性能

      注意,mysql是異步復制的,而MySQL Cluster是同步復制的。有很多種主從同步的方法,但核心的方法有兩種,Statement Based Replication(SBR)基于SQL語句的復制,另一種是Row Based Replication(RBR)基于行的復制,也可以使用Mixed Based Replication(MBR)。在mysql5.6中,默認使用的是SBR。而mysql 5.6.5和往后的版本是基于global transaction identifiers(GTIDs)來進行事務復制。當使用GTIDs時可以大大簡化復制過程,因為GTIDs完全基于事務,只要在主服務器上提交了事務,那么從服務器就一定會執(zhí)行該事務。

      通過設置服務器的系統變量binlog_format來指定要使用的格式:

      1.SBR:當使用二進制日志時,主服務器會把SQL語句寫入到日志中,然后從服務器會執(zhí)行該日志,這就是SBR,在mysql5.1.4之前的版本都只能使用這種格式。使用SBR會有如下

      長處:

      1. 日志文件更小
      2. 記錄了所有的語句,可以用來日后審計

      弊端:

      1. 使用如下函數的語句不能被正確地復制:load_file(); uuid(), uuid_short(); user(); found_rows(); sysdate(); get_lock(); is_free_lock(); is_used_lock(); master_pos_wait(); rand(); release_lock(); sleep(); version();
      2. 在日志中出現如下警告信息的不能正確地復制:[Warning] Statement is not safe to log in statement format.
      3. 或者在客戶端中出現show warnings
      4. Insert … select語句會執(zhí)行大量的行級鎖表
      5. Update語句會執(zhí)行大量的行級鎖表來掃描整個表

      2.RBR:主服務器把表的行變化作為事件寫入到二進制日志中,主服務器把代表了行變化的事件復制到從服務中,使用RBR的

      長處:

      1. 所有的數據變化都是被復制,這是最安全的復制方式
      2. 更少的行級鎖表

      弊端:

      1. 日志會很大
      2. 不能通過查看日志來審計執(zhí)行過的sql語句,不過可以通過使用mysqlbinlog  
      3. --base64-output=decode-rows --verbose來查看數據的 變動

      3.MBR:既使用SBR也使用RBR,默認使用SBR

       

      主從同步機制

      Mysql服務器之間的主從同步是基于二進制日志機制,主服務器使用二進制日志來記錄數據庫的變動情況,從服務器通過讀取和執(zhí)行該日志文件來保持和主服務器的數據一致。

      在使用二進制日志時,主服務器的所有操作都會被記錄下來,然后從服務器會接收到該日志的一個副本。從服務器可以指定執(zhí)行該日志中的哪一類事件(譬如只插入數據或者只更新數據),默認會執(zhí)行日志中的所有語句。

      每一個從服務器會記錄關于二進制日志的信息:文件名和已經處理過的語句,這樣意味著不同的從服務器可以分別執(zhí)行同一個二進制日志的不同部分,并且從服務器可以隨時連接或者中斷和服務器的連接。

      主服務器和每一個從服務器都必須配置一個唯一的ID號(在my.cnf文件的[mysqld]模塊下有一個server-id配置項),另外,每一個從服務器還需要通過CHANGE MASTER TO語句來配置它要連接的主服務器的ip地址,日志文件名稱和該日志里面的位置(這些信息存儲在主服務器的數據庫里)

       

      配置主從同步

      有很多種配置主從同步的方法,可以總結為如下的步驟:

      1.在主服務器上,必須開啟二進制日志機制和配置一個獨立的ID

      2.在每一個從服務器上,配置一個唯一的ID,創(chuàng)建一個用來專門復制主服務器數據的賬號

      3.在開始復制進程前,在主服務器上記錄二進制文件的位置信息

      4.如果在開始復制之前,數據庫中已經有數據,就必須先創(chuàng)建一個數據快照(可以使用mysqldump導出數據庫,或者直接復制數據文件)

      5.配置從服務器要連接的主服務器的IP地址和登陸授權,二進制日志文件名和位置

       

      配置主服務器

      1.更改配置文件,首先檢查你的主服務器上的my.cnf文件中是否已經在[mysqld]模塊下配置了log-bin和server-id

      [mysqld]
      
      log-bin=mysql-bin
      
      server-id=1

      注意上面的log-bin和server-id的值都是可以改為其他值的,如果沒有上面的配置,首先關閉mysql服務器,然后添加上去,接著重啟服務器

      2.創(chuàng)建用戶,每一個從服務器都需要用到一個賬戶名和密碼來連接主服務器,可以為每一個從服務器都創(chuàng)建一個賬戶,也可以讓全部服務器使用同一個賬戶。下面就為同一個ip網段的所有從服務器創(chuàng)建一個只能進行主從同步的賬戶。

      首先登陸mysql,然后創(chuàng)建一個用戶名為rep,密碼為123456的賬戶,該賬戶可以被192.168.253網段下的所有ip地址使用,且該賬戶只能進行主從同步

      mysql > grant replication slave on *.* to ‘rep’@‘192.168.253.%’ identified by ‘123456’;

      3.獲取二進制日志的信息并導出數據庫,步驟:

      首先登陸數據庫,然后刷新所有的表,同時給數據庫加上一把鎖,阻止對數據庫進行任何的寫操作

      mysql > flush tables with read lock;

      然后執(zhí)行下面的語句獲取二進制日志的信息

      mysql > show master status;

      圖片1

      File的值是當前使用的二進制日志的文件名,Position是該日志里面的位置信息(不需要糾結這個究竟代表什么),記住這兩個值,會在下面配置從服務器時用到。

      注意:如果之前的服務器并沒有配置使用二進制日志,那么使用上面的sql語句會顯示空,在鎖表之后,再導出數據庫里的數據(如果數據庫里沒有數據,可以忽略這一步)

      [root@localhost backup]# mysqldump -uroot -p'123456' -S /data/3306/data/mysql.sock --all-databases > /server/backup/mysql_bak.$(date +%F).sql

      如果數據量很大,可以在導出時就壓縮為原來的大概三分之一

      [root@localhost backup]# mysqldump -uroot -p'123456' -S /data/3306/data/mysql.sock --all-databases | gzip > /server/backup/mysql_bak.$(date +%F).sql.gz

      這時可以對數據庫解鎖,恢復對主數據庫的操作

      mysql > unlock tables;

       

      配置從服務器

      首先檢查從服務器上的my.cnf文件中是否已經在[mysqld]模塊下配置leserver-id

      [mysqld]
      
      server-id=2

      注意上面的server-id的值都是可以改為其他值的(建議更改為ip地址的最后一個字段),如果沒有上面的配置,首先關閉mysql服務器,然后添加上去,接著重啟服務器

      如果有多個從服務器上,那么每個服務器上配置的server-id都必須不一致。從服務器上沒必要配置log-bin,當然也可以配置log-bin選項,因為可以在從服務器上進行數據備份和災難恢復,或者某一天讓這個從服務器變成一個主服務器

      如果主服務器導出了數據,下面就導入該文件,如果主服務器沒有數據,就忽略這一步

      [root@localhost ~]# mysql -uroot -p'123456' -S /data/3306/data/mysql.sock < /server/backup/mysql_bak.2015-07-01.sql

      如果從主服務器上拿過來的是壓縮文件,就先解壓再導入

      配置同步參數,登陸mysql,輸入如下信息:

      復制代碼
      mysql> CHANGE MASTER TO
      
      -> MASTER_HOST='master_host_name',
      
      -> MASTER_USER='replication_user_name',
      
      -> MASTER_PASSWORD='replication_password',
      
      -> MASTER_LOG_FILE='recorded_log_file_name',
      復制代碼

      如圖所示:

      圖片2

       

      啟動主從同步進程

      mysql > start slave;

      檢查狀態(tài)

      mysql > show slave status \G

      圖片3

      上面的兩個進程都顯示YES則表示配置成功

       

      使用主從同步來備份

      把主服務器的數據復制到從服務器上,然后備份從服務器的數據,在數據量不是很大的時候使用mysqldump命令,對于很大的數據庫,就直接備份數據文件。

      使用mysqldump來備份

      步驟:(以下的所有操作都在從服務器上進行)

      1.首先暫停從服務器的復制進程

      shell > mysqladmin stop-slave

      或者只是暫停SQL進程(從服務器仍然能接收二進制日志的事件,但不會執(zhí)行這些事件,這樣能在重啟SQL進程時加快復制進度)

      shell > mysql -e ‘stop slave sql_thread;’

      2.使用mysqldump導出全部或部分的數據庫

      shell > mysqldump --all-databases > fulldb.dump

      3.在導出數據庫后,重啟復制進程

      shell > mysqladmin start-slave

       

      備份原始文件

      為了保證數據文件的完整性,在備份之前首先關閉從服務器,步驟:

      1.關閉從服務器:

      shell > mysqladmin shutdown

      2.復制數據文件,可以使用壓縮命令,假如當前目錄就是數據庫的數據目錄(在my.cnf文件中的配置項datadir的值就是該目錄的位置)

      shell > tar cf /tmp/dbbackup.tar ./data

      3.然后再啟動mysql服務器

       

      主從同步的小技巧

      主服務器第一次導入數據,如果你從其他地方拿來了要導入到主服務器中的數據,此時只要在主服務器中導入一次即可,因為這些數據會自動發(fā)送到從服務器中,在主服務器上使用命令

      shell > mysql -h master < other_data.sql

      增加從服務器,本來已經至少有一個從服務器時(暫時命名為slave1),決定再添加其余的從服務器(slave2),此時就不需要像上面那樣去操作主服務器,只要復制一個已經存在的從服務器就可以了

       

      排錯

      Slave_IO_Running: NO

      這是一個很常見的錯誤(我也曾對這個錯誤咬牙切齒),總結起來就三個原因:

      1. 主服務器的網絡不通,或者主服務器的防火墻拒絕了外部連接3306端口
      2. 在配置從服務器時,輸錯了ip地址和密碼,或者主服務器在創(chuàng)建用戶時寫錯了用戶名和密碼
      3. 在配置從服務器時,輸錯了主服務器的二進制日志信息

      排錯過程:(主服務器ip:192.168.1.139,從服務器ip:192.168.1.204)

      第0步就是檢查錯誤日志,如果不能快速排錯,可以按我的步驟試試:

      1.首先在從服務器上執(zhí)行ping程序,確定能ping通主服務器

      在從服務器上執(zhí)行mysq的遠程連接

      [root@slave204 log]# mysql -urep -p -h 192.168.1.139 -P3306

      如果顯示ERROR 1045 (28000): Access denied for user 'test'@'192.168.1.204' (using password: YES)則跳轉到第3

      2.登陸主服務器的mysql,查看所有的用戶

      mysql > select user,host from mysql.user;

      圖片4

      上圖就是我的錯誤根源,可以看到用戶名完全寫錯了,先刪除錯誤的用戶:

      mysql > drop user “rep@192.168.1.%”@”%”;

      再重新創(chuàng)建用戶:

      mysql > grant replication slave on *.* to ‘rep’@‘192.168.1.%’ identified by ‘123456’;
      
      mysql > flush privileges;

      3.假如用戶名沒有錯,那么如何排除是否是輸入的密碼錯誤呢?

      額,我也想知道方法。最好就是多輸入幾遍,或者重新創(chuàng)建用戶名和密碼來測試。問題還沒有解決,轉到4

      4.在你的防火墻中添加3306端口

      [root@localhost mysql]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
      
      [root@localhost mysql]# firewall-cmd --reload

      再關閉selinux

      [root@slave204 log]# vi /etc/sysconfig/selinux

      把SELINUX=enforcing改為SELINUX=disabled

      [root@slave204 log]# source /etc/sysconfig/selinux

      登錄主服務器,查看服務器狀態(tài)

      mysql > show master status \G

      然后重新配置一次從服務器,在配置之前首先關閉主從同步進程

      mysql > stop slave;

      原文來自http://www.rzrgm.cn/kylinlin/p/5258719.html

      posted on 2018-08-02 21:58  金翅大鵬吃唐僧  閱讀(190)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产一区二区三区18禁| 人人妻人人澡人人爽| 99久久精品国产一区色| 无码射肉在线播放视频| 亚洲欧美一区二区三区在线| 久青草精品视频在线观看| 国产成人久久精品一区二区| 免费激情网址| 亚洲最大成人在线播放| 亚洲自拍偷拍激情视频| 亚洲国产午夜精品福利| 亚洲夂夂婷婷色拍ww47| 自拍偷自拍亚洲精品播放| 最近中文字幕日韩有码| 丁香婷婷综合激情五月色| 90后极品粉嫩小泬20p| 国产馆在线精品极品粉嫩| 亚洲精品天堂在线观看| 亚洲另类激情专区小说图片| free性开放小少妇| 2020年最新国产精品正在播放| 汉寿县| 亚洲熟妇熟女久久精品综合 | 中文字幕国产日韩精品| jizz国产免费观看| 国产成人亚洲日韩欧美| 亚洲人午夜精品射精日韩| 精品精品亚洲高清a毛片| 成人啪啪高潮不断观看| 精品日韩精品国产另类专区| 欧美人成在线播放网站免费| 久久人妻无码一区二区三区av| 精品天堂色吊丝一区二区| 性夜黄a爽影免费看| 中国亚州女人69内射少妇| 中文字日产幕码三区国产| 日本视频一两二两三区| 亚洲国产精品午夜福利| 久久精品夜夜夜夜夜久久| 2020久久国产综合精品swag| 久久成人国产精品免费软件|