成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

中小型企業可參考的類MySQL雙主架構方案

開發 前端
主從同步一般都是一個主庫,一旦主庫出現問題,就有可能直接導致整個主從同步架構崩盤,雖然發現后也是可以慢慢恢復的,但是這個恢復時間對于很多公司來說是難以接受的,今天的這篇博文就是主要給解決主庫單點故障這個問題提供一個思路。

在企業中,一般系統架構的瓶頸會出現在數據庫這一部分,mysql主從架構在很大程度上解決了這部分瓶頸,但是在mysql主從同步的架構也存在很多問題;比如:1. 關于數據寫入部分(也就是主庫)往往很難做到擴展,雖然很多大公司在邏輯業務方面就進行對數據的拆分,比如商品庫存按照區域去拆分(一個區域走一個庫存也就是一個主庫,然后定時同步總的庫存),按照商品類型去劃分(一個類型的商品走一套數據庫),但是這對于很多中小型公司來說實現起來還是比較困難的; 2. 主從同步一般都是一個主庫,一旦主庫出現問題,就有可能直接導致整個主從同步架構崩盤,雖然發現后也是可以慢慢恢復的,但是這個恢復時間對于很多公司來說是難以接受的,今天的這篇博文就是主要給解決主庫單點故障這個問題提供一個思路:

主要思路是:

1.一臺主庫(我們稱之為master-01)提供服務,只負責數據的寫入;

2.拿出一臺數據庫服務器(我們稱之為Master-02)資源做master-01主庫的從庫(之間做主從同步);

3.兩臺主庫之間做高可用,可以采用keepalived等方案(一定要保證master-01同時也要作為keepalived的主)

4.程序在調用主庫IP地址的地方寫為高可用的VIP地址;

5.所有提供服務的從服務器與master-02進行主從同步;

6.建議采用高可用策略的時候,當master-01出現問題切換到master-02的時候,即使master-01恢復了,也不要讓它去自動承接VIP地址,否則可能造成數據的混寫;

這樣做可以在一定程度上保證主庫的高可用,在一臺主庫down掉之后,可以在極短的時間內切換到另一臺主庫上(盡可能減少主庫宕機對業務造成的影響),減少了主從同步給線上主庫帶來的壓力;但是也有幾個不足的地方:比如master-02可能會一直處于空閑狀態(其實完全可以讓它承擔一部分從庫的角色來負責一部分查詢請求的),2. 這樣真正提供服務的從庫要等master-02先同步完了數據后才能去master-02上去同步數據,這樣可能會造成一定程度的同步延遲時間的加長;3. 如果master-01一旦恢復正常,會不會導致數據寫入混亂(這個可以在keepalived中設置響應的規則,讓其不”奪權”,我們認為的去調整操作即可

架構的簡易圖如下:

wKiom1NFKNvDUb10AADdD6vme7s011.jpg

具體實施方案:

1. 在所有需要提供服務的服務器上安裝MySQL服務(建議源碼安裝)

1.1 yum安裝依賴包

  1. yum -y install cmake make gcc gcc-c++  ncurses-devel bison openssl-devel 

1.2 添加MySQL所需要的用戶/組

  1. groupadd mysql   
  2. useradd -g mysql -r mysql 

1.3 下載MySQL源碼包

  1. wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.36.tar.gz  

1.4 創建MySQL安裝所需要的目錄

  1. mkdir /data/mydata/{data,tmp,logs} –pv  

1.5 解壓編譯安裝MySQL

  1. tar xf mysql-5.5.36.tar.gz   
  2. cd mysql-5.5.36   
  3. cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   
  4.       -DMYSQL_DATADIR=/data/mydata/data \   
  5.       -DSYSCINFDIR=/etc \   
  6.       -DWITH_INNOBASE_STORAGE_ENGINE=1 \   
  7.       -DWITH_ARCHIVE_STORAGE_ENGINE=1 \   
  8.       -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \   
  9.       -DWITH_READLINE=1 \   
  10.       -DWITH_SSL=system \   
  11.       -DWITH_ZLIB=system \   
  12.       -DWITH_LIBWARP=0 \   
  13.       -DWITH_UNIX_ADDR=/tmp/mysql.sock \   
  14.       -DDEFAULT_CHARASET=uft8 \   
  15.       -DDEFAULT_COLLATTON=utf9_general_ci \   
  16. make && make install 

1.6 為MySQL提供啟動腳本

  1. cp support-files/mysql.server /etc/rc.d/init.d/mysqld  

1.7 為master-01主庫提供配置文件(32G內存較為保守(滿連接占用25G左右內存)的配置文件)

  1. [client]   
  2. port = 3306   
  3. socket = /var/lib/mysql/mysql.sock   
  4. default-character-set = utf-8   
  5. [mysqld]   
  6. server-id = 1   
  7. port = 3306   
  8. user = mysql   
  9. basedir = /usr/local/mysql  
  10. datadir = /data/mydata/data  
  11. tmpdir = /data/mydata/tmp  
  12. socket = /var/lib/mysql/mysql.sock   
  13. skip-external-locking   
  14. skip-name-resolve   
  15. default-storage-engine = INNODB   
  16. character-set-server = utf8   
  17. wait-timeout = 100   
  18. connect_timeout = 20   
  19. interactive_timeout = 100   
  20. back_log = 300   
  21. myisam_recover   
  22. event_scheduler = on   
  23. log-bin=/data/mydata/logs/mysql-bin  
  24. binlog_format = row   
  25. max_binlog_size = 64M   
  26. binlog_cache_size = 1M   
  27. slave-net-timeout = 10   
  28. skip-slave-start   
  29. slow_query_log  = 1   
  30. long_query_time = 1   
  31. slow_query_log_file = /data/mydata/mysqllog/logs/mysql.slow   
  32. log-error = /data/mydata/mysqllog/logs/error.log   
  33. max_connections = 1000   
  34. max_user_connections = 1000   
  35. max_connect_errors = 10000   
  36. key_buffer_size = 32M     #以MyISAM為主的服務器,要調大此值   
  37. max_allowed_packet = 64M   
  38. table_cache = 4096   
  39. table_open_cache = 4096   
  40. table_definition_cache = 4096   
  41. sort_buffer_size = 512K          
  42. read_buffer_size = 512K          
  43. read_rnd_buffer_size = 512K      
  44. join_buffer_size = 512K          
  45. tmp_table_size = 64M         
  46. max_heap_table_size = 64M      
  47. query_cache_type = 0   
  48. query_cache_size = 0   
  49. bulk_insert_buffer_size = 16M   
  50. thread_cache_size = 64   
  51. thread_concurrency = 16       #CPU核數*2   
  52. thread_stack = 256K   
  53. innodb_data_home_dir = /data/mydata/data  
  54. innodb_log_group_home_dir = /data/mydata/mysqllog/logs  
  55. innodb_data_file_path = ibdata1:1G:autoextend   
  56. innodb_buffer_pool_size = 16G   
  57. innodb_buffer_pool_instances = 4                  
  58. innodb_additional_mem_pool_size = 16M   
  59. innodb_log_file_size = 512M   
  60. innodb_log_buffer_size = 32M   
  61. innodb_log_files_in_group = 3   
  62. innodb_flush_log_at_trx_commit = 2   
  63. innodb_lock_wait_timeout = 10   
  64. innodb_sync_spin_loops = 40   
  65. innodb_max_dirty_pages_pct = 90   
  66. innodb_support_xa = 1   
  67. innodb_thread_concurrency = 0   
  68. innodb_thread_sleep_delay = 500   
  69. innodb_file_io_threads = 4   
  70. innodb_concurrency_tickets = 1000   
  71. log_bin_trust_function_creators = 1   
  72. innodb_flush_method = O_DIRECT    
  73. innodb_file_per_table          #是否采用單表單空間   
  74. innodb_write_io_threads = 8     
  75. innodb_read_io_threads = 8   
  76. innodb_io_capacity = 1000   
  77. innodb_file_format = Barracuda    #不開啟單表單空間,此選項無效   
  78. innodb_purge_threads = 1   
  79. innodb_purge_batch_size = 32   
  80. innodb_old_blocks_pct = 75   
  81. innodb_change_buffering = all   
  82. transaction_isolation = READ-COMMITTED   
  83. [mysqldump]   
  84. quick   
  85. max_allowed_packet = 32M   
  86. [mysql]   
  87. no-auto-rehash   
  88. [myisamchk]   
  89. key_buffer_size = 64M   
  90. sort_buffer_size = 256M   
  91. read_buffer = 2M   
  92. write_buffer = 2M   
  93. [mysqlhotcopy]   
  94. interactive-timeout   
  95. [mysqld_safe]   
  96. open-files-limit = 10240 

1.8 為master-02提供配置文件

  1. master-02的配置文件僅需在master-01上稍作修改   
  2. server-id = 20   
  3. log_slave_updates = 1    #添加(將復制事件寫入binlog,一臺服務器既做主庫又做從庫此選項必須要開啟)   
  4. replicate-same-server-id=0 #添加(防止MySQL循環更新)   
  5. relay_log_recovery = 1   #添加(MySQLrelay_log的自動修復功能) 

1.9 為從庫提供配置文件(8G)

  1. [client]   
  2. port = 3306   
  3. socket = /var/lib/mysql/mysql.sock   
  4. default-character-set = utf8   
  5. [mysqld]   
  6. server-id = 2   
  7. port = 3306   
  8. user = mysql   
  9. basedir = /usr/local/mysql  
  10. datadir = /data/mydata/data  
  11. tmpdir  = /data/mydata/tmp  
  12. socket  = /var/lib/mysql/mysql.sock   
  13. skip-external-locking   
  14. skip-name-resolve   
  15. default-storage-engine = INNODB   
  16. character-set-server = utf8   
  17. wait-timeout = 100   
  18. connect_timeout = 20   
  19. interactive_timeout = 100   
  20. back_log = 300   
  21. myisam_recover   
  22. event_scheduler = on   
  23. log-bin=/data/mydata/logs/mysql-bin  
  24. binlog_format = row   
  25. max_binlog_size = 64M   
  26. binlog_cache_size = 1M   
  27. slave-net-timeout = 10   
  28. relay_log_recovery = 1   
  29. slow_query_log = 1   
  30. long_query_time = 1   
  31. slow_query_log_file = /data/mydata/mysqllog/logs/mysql.slow   
  32. log-error = /data/mydata/mysqllog/logs/error.log   
  33. max_connections = 500   
  34. max_user_connections = 500   
  35. max_connect_errors = 10000   
  36. key_buffer_size = 32M     #以MyISAM為主的服務器,要調大此值   
  37. max_allowed_packet = 64M   
  38. table_cache = 2048   
  39. table_open_cache = 2048   
  40. table_definition_cache = 2048   
  41. sort_buffer_size = 128K          
  42. read_buffer_size = 128K          
  43. read_rnd_buffer_size = 128K      
  44. join_buffer_size = 128K          
  45. tmp_table_size = 16M         
  46. max_heap_table_size = 16M      
  47. query_cache_type = 0   
  48. query_cache_size = 0   
  49. bulk_insert_buffer_size = 16M   
  50. thread_cache_size = 64   
  51. thread_concurrency = 4       #CPU核數*2   
  52. thread_stack = 128K   
  53. innodb_data_home_dir = /data/mydata/data  
  54. innodb_log_group_home_dir = /data/mydata/mysqllog/logs  
  55. innodb_data_file_path = ibdata1:1G:autoextend   
  56. innodb_buffer_pool_size = 2G   
  57. innodb_buffer_pool_instances = 4                  
  58. innodb_additional_mem_pool_size = 4M   
  59. innodb_log_file_size = 512M   
  60. innodb_log_buffer_size = 16M   
  61. innodb_log_files_in_group = 3   
  62. innodb_flush_log_at_trx_commit = 2   
  63. innodb_lock_wait_timeout = 10   
  64. innodb_sync_spin_loops = 40   
  65. innodb_max_dirty_pages_pct = 90   
  66. innodb_support_xa = 1   
  67. innodb_thread_concurrency = 0   
  68. innodb_thread_sleep_delay = 500   
  69. innodb_file_io_threads = 4   
  70. innodb_concurrency_tickets = 1000   
  71. log_bin_trust_function_creators = 1   
  72. innodb_flush_method = O_DIRECT       
  73. innodb_file_per_table                #是否采用單表單空間   
  74. innodb_write_io_threads = 8     
  75. innodb_read_io_threads = 8   
  76. innodb_io_capacity = 1000   
  77. innodb_file_format = Barracuda     #不開啟單表單空間,此選項無效   
  78. innodb_purge_threads = 1   
  79. innodb_purge_batch_size = 32   
  80. innodb_old_blocks_pct = 75   
  81. innodb_change_buffering = all   
  82. transaction_isolation = READ-COMMITTED   
  83. [mysqldump]   
  84. quick   
  85. max_allowed_packet = 32M   
  86. [mysql]   
  87. no-auto-rehash   
  88. [myisamchk]   
  89. key_buffer_size = 64M   
  90. sort_buffer_size = 256M   
  91. read_buffer = 2M   
  92. write_buffer = 2M   
  93. [mysqlhotcopy]   
  94. interactive-timeout   
  95. [mysqld_safe]   
  96. open-files-limit = 10240 

1.10 初始化MySQL

  1. /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mydata/data/ --basedir=/usr/local/mysql  

1.11 為啟動腳本賦予可執行權限并啟動MySQL

  1. chmod +x /etc/rc.d/init.d/mysqld  
  2. /etc/init.d/mysqld start 

2. 配置master-01

2.1 添加主從同步賬戶

  1. mysql> grant replication slave on *.* to 'repl'@'192.168.237.%' idetified by '123456';   
  2. mysql> flush privileges 
2.2 查看主庫的狀態
  1. mysql> show master status;   
  2. +------------------+----------+--------------+------------------+   
  3. | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |   
  4. +------------------+----------+--------------+------------------+   
  5. | mysql-bin.000009 |      652 |              |                  |   
  6. +------------------+----------+--------------+------------------+   
  7. 1 row in set (0.01 sec) 
2.3 因為這是測試環境,可以保證沒數據寫入,否則需要先鎖表-->查看狀態-->備份數據-->查看狀態(保證沒變)-->解鎖表

3. 配置master-02

3.1 配置master-02為master-01的從

  1. #若是線上有數據需要先導入數據   
  2. mysql> CHANGE MASTER TO   
  3.   -> MASTER_HOST='192.168.237.128',   
  4.   -> MASTER_PORT=3306,   
  5.   -> MASTER_USER='repl',   
  6.   -> MASTER_PASSWORD='123456',   
  7.   -> MASTER_LOG_FILE='mysql-bin.000009',   
  8.   -> MASTER_LOG_POS=652   
  9. Query OK, 0 rows affected (0.03 sec)   
  10. mysql> start slave   
  11. mysql> show slave status \G   
  12.    Slave_IO_Running: Yes   #確保為yes   
  13.    Slave_SQL_Running: Yes  #確保為yes 

3.2 配置master-02的同步用戶

  1. mysql> grant replication slave on *.* to 'repl’@’192.168.237.%' identified by '123456';   
  2. mysql> flush privileges 

3.3 查看master-02的狀態

  1. mysql> show master status;   
  2. +------------------+----------+--------------+------------------+   
  3. | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |   
  4. +------------------+----------+--------------+------------------+   
  5. | mysql-bin.000004 |      689 |              |                  |   
  6. +------------------+----------+--------------+------------------+   
  7. 1 row in set (0.00 sec) 

4. 從庫根據上面步驟配置為master-02的從即可(為了節省篇幅不再一一贅述)

5. 在master-01上創建一個數據庫測試同步效果

wKioL1NFMwnRG1VeAAGsycQhU34212.jpg

6. 去master-02跟從庫上分別查看是否已經同步過數據來

wKiom1NFNErwl1pfAAEveu6pGgo065.jpg

wKioL1NFNGujZOZkAAE4ClWWOv0439.jpg

好了,至此數據同步已經完成,關于keepalived實現雙主高可用,我會在下篇keepalived實現MySQL高可用總給大家寫出!!!

博文鏈接:http://yanshisan.blog.51cto.com/7879234/1393063

責任編輯:林師授 來源: 51CTO博客
相關推薦

2010-08-24 10:04:45

中小型企業虛擬化

2009-11-24 09:51:22

路由設計方案

2011-02-24 09:56:26

組網網絡

2018-11-08 09:10:18

組網光纖網絡

2010-08-23 12:12:58

2014-09-28 14:28:12

硬盤加密全盤加密

2018-10-08 05:23:20

2009-07-11 14:46:44

ADSL光纖企業

2012-03-30 16:43:59

云計算中小企業安全

2010-08-25 17:45:21

2015-04-23 09:28:31

戴爾云計算網絡

2011-01-21 15:59:21

Sendmail

2009-12-30 14:28:01

2022-03-12 19:12:56

FlexeraAWSAzure

2013-09-30 10:01:19

中小企業關鍵業務應用

2020-11-13 19:11:53

上云企業成本

2019-12-10 08:50:27

網絡攻擊網絡安全漏洞

2011-03-01 09:46:59

數據庫

2022-03-10 11:48:13

云服務器服務器

2014-04-30 11:04:42

SDN軟件定義網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品大全 | 国产精品伦理一区二区三区 | 亚洲a视| 综合久久综合久久 | 国产精品久久久久久久久久久免费看 | 18gay男同69亚洲网站 | 国产成人精品一区二区三区四区 | 久久久久久成人 | 午夜久久久久久久久久一区二区 | 成人一区二区三区在线观看 | 亚州综合一区 | 99久久久久 | 成人免费看片又大又黄 | 黑人精品欧美一区二区蜜桃 | 高清国产午夜精品久久久久久 | 337p日本欧洲亚洲大胆精蜜臀 | 成人h视频在线观看 | 久久久蜜桃 | 国产精品欧美一区二区三区不卡 | 99精品99| 玖玖综合网 | 综合精品在线 | 欧美电影免费观看 | 亚洲视频在线观看 | 国产伦精品一区二区三区照片91 | 久久精品高清视频 | 免费av观看 | 99这里只有精品视频 | 99视频在线免费观看 | 久久999 | 欧美成人激情 | 久久精品国产免费看久久精品 | 中文字幕一区在线 | 欧美黄色绿像 | 九九久久免费视频 | 蜜桃精品视频在线 | 男女啪啪网址 | 中文字幕在线精品 | 99久久国产综合精品麻豆 | www狠狠爱com| 精品国产欧美一区二区三区成人 |