mysql數(shù)據(jù)庫集群架構(gòu)主從、雙主架構(gòu)部署及數(shù)據(jù)備份

      網(wǎng)友投稿 1048 2022-05-28

      1.mysql主從與雙主結(jié)構(gòu)的優(yōu)缺點:

      1.1主從結(jié)構(gòu):

      1.1.1 數(shù)據(jù)存在鏡像和數(shù)據(jù)冗余,可以防止單一主機(jī)的數(shù)據(jù)丟失,提高數(shù)據(jù)的安全性。

      1.1.2在從服務(wù)器上做數(shù)據(jù)備份,這樣不影響主服務(wù)器的正常運行。如mysqldump備份時會加表所。

      1.1.3在從服務(wù)器上做數(shù)據(jù)報表和數(shù)據(jù)統(tǒng)計,這樣可以避免生產(chǎn)服務(wù)器的訪問壓力過大;

      1.1.4如果使用mysql proxy,在業(yè)務(wù)上可以實現(xiàn)讀寫分離。讓讀操作在從服務(wù)器上執(zhí)行,減小主服務(wù)器的負(fù)擔(dān)。不錯的項目,可惜官方半途夭折了,不建議用,后期維護(hù)不便;可以考慮JDBC文件中配置,實現(xiàn)讀寫分離;

      1.2 雙主結(jié)構(gòu)

      優(yōu)點:高可用、并發(fā)能力大

      缺點:同步數(shù)據(jù)時容易出錯,不易維護(hù)(slave-skip-errors=all)

      2配置文件

      2.1主從配置

      主:

      log-bin-trust-function-creators=1

      log-bin=mysql-bin

      server-id=1

      sync-binlog=1

      log-bin-index=/home/mysql/mysql-log/mysql-bin.index

      log-bin=/home/mysql/mysql-log/mysql-bin

      binlog_format=mixed

      從:

      relay-log=mysql-relay

      server-id=2

      read-only=TRUE

      replicate-ignore-db=mysql???//屏蔽對mysql庫的同步

      replicate-do-db=node1???????//同步數(shù)據(jù)庫名稱

      2.2雙主配置

      主1:

      log-bin=mysql-bin

      relay-log=mysql-relay

      server-id=1

      sync-binlog=1

      auto-increment-increment=1

      auto-increment-offset=2

      主2:

      log-bin=mysql-bin

      relay-log=mysql-relay

      server-id=2

      mysql數(shù)據(jù)庫集群架構(gòu)主從、雙主架構(gòu)部署及數(shù)據(jù)備份

      sync-binlog=1

      auto-increment-increment=2

      auto-increment-offset=2

      2.3 參數(shù)優(yōu)化

      1. innodb_buffer_pool_size

      這個參數(shù)和MyISAM的key_buffer_size有相似之處,但也是有差別的。這個參數(shù)主要緩存innodb表的索引,數(shù)據(jù),插入數(shù)據(jù)時的緩 沖。為Innodb加速優(yōu)化首要參數(shù)。

      show engine innodb status \G;

      數(shù)據(jù)大小+10%左右做為這個參數(shù)的值。

      另外一個和此相關(guān)的參數(shù):innodb_additional_mem_pool_size,來存放 Innodb的內(nèi)部目錄

      這個值不用分配太大,系統(tǒng)可以自動調(diào)。如果表比較多,可以適當(dāng)?shù)脑龃蟆?/p>

      show global variables like ? 'innodb_additional_mem_pool_size';

      2. innodb_flush_log_at_trx_commit(日志刷新設(shè)置)

      show global variables like ? 'innodb_flush_log_at_trx_commit';

      0:每秒同步,并執(zhí)行磁盤flush操作

      1:每事物同步,并執(zhí)行磁盤flush操作

      2:每事物同步,但不執(zhí)行磁盤的flush操作

      1最安全0最保守2最性能

      普通硬盤情況下,innodb_flush_log_at_trx_commit參數(shù)分別是1和2的情況,兩者差別巨大,差異幾乎到了9倍。

      在做了raid的情況下,innodb_flush_log_at_trx_commit參數(shù)分別是1和2的情況,兩者有10%左右的差異。

      3.wait-timeout和interactive_timeout

      wait-timeout?=?100?指的是MySQL在關(guān)閉一個非交互的連接之前所要等待的秒數(shù)interactive_timeout?=?100指的是mysql在關(guān)閉一個交互的連接之前所要等待的秒數(shù)nteractive_timeout和wait_timeout的默認(rèn)值都是2880(8小時)。當(dāng)這兩個參數(shù)同時出現(xiàn)在[mysqld]里時,會以interactive_timeout的值為準(zhǔn)。也就是說不管wait_timeout的值是多少,用show variables like ? '%timeout%';查看時顯示的兩個值都是一樣的,并且都是interactive_timeout的值。

      這里設(shè)置innodb_lock_wait_timeout = 120? ? 就可以了

      實際報錯:

      mysql> set ? global wait_timeout=600;

      Query OK, 0 rows affected ? (0.00 sec)

      mysql> set ? global interactive_timeout=600;

      Query OK, 0 rows ? affected (0.00 sec)

      4.慢查詢?nèi)罩?/p>

      show variables like "%slow%";

      log-slow-queries=/home/mysql/slowlog/slowquery.log

      (指定日志文件存放位置,可以為空,系統(tǒng)會給一個缺省的文件host_name-slow.log)

      long_query_time=2

      (記錄超過的時間,默認(rèn)為10s)

      log-queries-not-using-indexes

      (log下來沒有使用索引的query,可以根據(jù)情況決定是否開啟)

      log-long-format

      (如果設(shè)置了,所有沒有使用索引的查詢也將被記錄)

      5、二進(jìn)制日志

      binlog-format=mixed

      1)statement:修改數(shù)據(jù)的sql

      優(yōu)點:減少了bin-log日志量,節(jié)約了I/O性能

      缺點:為了這些語句能在slave上正確運行。因此還必須記錄每條在執(zhí)行的時候的一些相關(guān)信息,mysql的復(fù)制像一些特定函數(shù)功能slave可與master上要保持一致會有很多相關(guān)問題(如sleep()函數(shù),last_insert_id(),以及user-defind function(udf)會出現(xiàn)的問題。

      2)row:記錄那一條記錄被修改成什么了

      優(yōu)點:解決無法被正確復(fù)制的問題

      缺點:產(chǎn)生大量的日志內(nèi)容。

      3)mixed:是以上level的混合使用。

      查看二進(jìn)制日志(要在目錄binlog目錄下)

      mysqlbinlog? -u root -proot--start-position=106 ? --stop-position=187 mysql-bin.000001

      滾動:

      service MySQld start

      flush logs

      刪除:

      show binary logs;

      purge binary logs to 'mysql-bin-000003'

      6. innodb_thread_concurrency

      最大的線程數(shù)

      1) 最少設(shè)置為(num_disks+num_cpus)*2。

      2) 可以通過設(shè)置成1000來禁止這個限制

      7. innodb_flush_method

      設(shè)置InnoDB同步IO的方式:

      1) Default – 使用fsync()。

      2) O_SYNC 以sync模式打開文件,通常比較慢。

      3) O_DIRECT,在Linux上使用Direct IO。可以顯著提高速度,特別是在RAID系統(tǒng)

      上。避免額外的數(shù)據(jù)復(fù)制和double buffering(mysql buffering 和OS buffering)。

      設(shè)置:

      innodb_flush_method=O_DIRECT

      innodb_max_dirty_pages_pct=75

      8. innodb_log_buffer_size:

      磁盤速度是很慢的,直接將log寫道磁盤會影響InnoDB的性能,該參數(shù)設(shè)定了log buffer的大小,一般4M。如果有大的blob操作,可以適當(dāng)增大。

      3.主從同步

      第一步master將改變記錄到二進(jìn)制日志(binary log)中(這些記錄叫做二進(jìn)制日志事件,log-bin);

      第二步slave將master的binary log events拷貝到它的中繼日志(relay log);

      第三步slave重放中繼日志中的事件,將改變反映它自己的數(shù)據(jù)。

      具體過程如圖所示:

      4.備份與還原

      4.1壓縮工具選擇

      工具

      壓縮前

      壓縮后

      用時

      tar –zcf

      150M

      9.1M

      3秒

      tar –Jcf

      150M

      7.2M

      25秒

      zip

      150M

      9.2M

      3秒

      gzip

      150M

      不支持壓縮目錄

      bzip2

      150M

      不支持壓縮目錄

      xz

      150M

      不支持壓縮目錄

      經(jīng)過在tar –zcf 、tar –Jcf、zip、gzip、bzip2、xz6款壓縮工具測試對比,選擇了tar –zcf為壓縮工具,把tar –zcf壓縮后的包再用xz壓縮包大小為9.0M;

      4.2 備份數(shù)據(jù)庫

      完全備份腳本:

      Vi mysql-1dayback.sh

      #/bin/bash

      bktime=$(date +%F)

      cd /home/mysql-data-bak/

      #打包壓縮文件

      tar -zcf? mysqlback_$(date +%F-%H-%M-%S).tar.xz? day-*

      #壓縮daybak/目櫸有文

      xz day-*

      #將打包文倀°allbk目

      mv?? *.xz? ? allbak/

      #刪除原

      rm -rf ? /home/mysql-data-bak/day-wanquan/*?? ? /home/mysql-data-bak/day-zengliang/*

      #每日完全備份一次

      /usr/bin/innobackupex ? --user=root --password=root /home/mysql-data-bak/day-wanquan/

      增量備份:

      Vi mysql-1hourback.sh

      #!/bin/bash

      # This is a backup script ? for mysql' backup

      name=`ls ? /home/mysql-data-bak/day-wanquan/`

      /usr/bin/innobackupex ? --user=root --password=root? ? --incremental /home/mysql-data-bak/day-zengliang? ? --incremental-basedir=/home/mysql-data-bak/day-wanquan/$name

      添加計劃任務(wù):

      0 0 * * *? sh?? ? /home/mysql-1dayback.sh

      15 */1 * * *? sh?? ? /home/mysql-1hourback.sh

      4.3 還原數(shù)據(jù)庫

      恢復(fù)完全備份數(shù)據(jù)

      [root@localhost data]# ? innobackupex --apply-log? --redo-only /backup/2016-05-26_15-37-02/

      --apply-log? ? 回滾日志

      --redo-only? ? 回滾合并

      合并第一個增量備份到完全備份里面

      [root@localhost data]# ? innobackupex --apply-log? --redo-only /backup/2013-09-06_15-37-02/? ? --incremental-dir=/backup/2016-05-26_16-15-17/

      執(zhí)行完結(jié)尾部分出現(xiàn)下面的消息表示成功了

      innobackupex: completed OK!

      恢復(fù)全部數(shù)據(jù)庫

      [root@localhost data]# innobackupex --copy-back? /backup/2016-05-26_15-37-02/

      修改恢復(fù)數(shù)據(jù)庫目錄中文件的權(quán)限

      [root@localhost data]# chown? -R? mysql:mysql *

      service mysqld start

      5.計劃

      5.1 目前正式和驗證環(huán)境都采用的是主從結(jié)構(gòu),確保主服務(wù)器正常使用;

      5.2從服務(wù)器與主服務(wù)器做數(shù)據(jù)同步,觀察三周時間,此期間解決數(shù)據(jù)同步時發(fā)生的問題;

      5.3到6月13日確保從服務(wù)器正常同步數(shù)據(jù),可以讓從服務(wù)器做讀操作,分擔(dān)主服務(wù)器壓力;

      5.4今后根據(jù)業(yè)務(wù)需求考慮雙主。

      附:

      1.解鎖表命令:

      flush ? table with read lock 鎖表,只讀不改

      unlock ? tables 解鎖

      2.備份

      溫備步驟:

      備份所有庫:mysqldump -uroot-lock-all-tables --flush-logs --master-date=2 ? --events ?-B --all-databases ? >all-'date +%F-$H-%M-%s'.sql

      備份二進(jìn)制:mysqlbinlog mysql-bin.000004>/opt/binlog-bak-'date ? +%F-%H-%M-%S'.sql

      3、xtrabackup

      安裝

      rpm ? -ivh percona-xtrabackup-2.3.3-1.el6.x86_64.rpm

      附件: MySql數(shù)據(jù)庫集群架構(gòu)方案.pdf 1005.83KB 下載次數(shù):1次

      MySQL 數(shù)據(jù)庫

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:基因測序:鯤鵬kc1源碼方式安裝軟件Oncotator
      下一篇:HBase(十一)集群監(jiān)控
      相關(guān)文章
      亚洲国产电影av在线网址| 亚洲成av人片天堂网| 亚洲中文字幕第一页在线 | 在线观看亚洲免费视频| 国产色在线|亚洲| 久久久久亚洲av无码专区喷水| 色窝窝亚洲av网| 亚洲第一成年网站大全亚洲| 亚洲精品国产精品乱码视色| 中文字幕中韩乱码亚洲大片| AV激情亚洲男人的天堂国语| 亚洲综合色区中文字幕| 亚洲成人在线免费观看| 亚洲高清视频免费| 亚洲激情在线视频| 亚洲AV无码久久精品成人| 国产日产亚洲系列| 亚洲人成无码网WWW| 亚洲AV之男人的天堂| 午夜亚洲国产成人不卡在线| 亚洲av无码一区二区三区在线播放| 亚洲一区中文字幕| 亚洲免费视频观看| 91亚洲性爱在线视频| 亚洲精品在线免费看| 亚洲欧洲精品在线| 亚洲黄色中文字幕| 亚洲国产模特在线播放| 亚洲理论在线观看| 亚洲第一页在线播放| 亚洲国产成人超福利久久精品| 亚洲色欲或者高潮影院| 久久久久久久尹人综合网亚洲| 在线亚洲97se亚洲综合在线| 久久精品亚洲男人的天堂 | 国产区图片区小说区亚洲区| 国产精品亚洲专一区二区三区| 国产av无码专区亚洲av毛片搜 | 亚洲五月综合缴情婷婷| 国产成人精品日本亚洲专一区| 亚洲砖码砖专无区2023|