1. 程式人生 > >為我的部落格網站資料庫使用Docker實現MySQL主從同步

為我的部落格網站資料庫使用Docker實現MySQL主從同步

前言

個人部落格使用了阿里雲的伺服器,此文是筆者實現WordPress+Docker+MySQL主從同步架構的記錄。

環境

Docker version 1.13.1

LNMP:
- 阿里雲centos 7.3
- nginx version: nginx/1.12.2
- mysql5.6(Docker映象)
- PHP 5.4.16

WordPress:
- wordpress-4.9.4-zh_CN.zip

步驟

LNMP結構已經搭建好這裡不再累贅,Docker搭建MySQL主從兩個容器對映到了主機的3307埠(MySQL主節點)和3307埠(MySQL從節點)。

1、下載mysql5.6映象

[root@tender]# docker pull mysql:5.6

2、為容器建立對映的配置檔案目錄、資料目錄、和日誌目錄

[[email protected]]# tree .
├── mysql_master
│   ├── conf
│   ├── data
│   └── logs
├── mysql_slave
    ├── conf
    ├── data
    └── logs

3、在mysql_master、mysql_slave的conf資料夾下建立MySQL主從結構配置檔案,對映給容器時會使用這個配置檔案啟動MySQL。

mysql_master

[[email protected]]# vim mysql_master/conf/my.cnf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
symbolic-links=0
character-set-server = utf8
#skip-networking
innodb_print_all_deadlocks = 1
max_connections = 2000
max_connect_errors = 6000
open_files_limit
= 65535 table_open_cache = 128 max_allowed_packet = 4M binlog_cache_size = 1M max_heap_table_size = 8M tmp_table_size = 16M read_buffer_size = 2M read_rnd_buffer_size = 8M sort_buffer_size = 8M join_buffer_size = 28M key_buffer_size = 4M thread_cache_size = 8 query_cache_type = 1 query_cache_size = 8M query_cache_limit = 2M ft_min_word_len = 4 log-bin = mysql-bin server-id = 1 binlog_format = mixed performance_schema = 0 explicit_defaults_for_timestamp #lower_case_table_names = 1 interactive_timeout = 28800 wait_timeout = 28800 # Recommended in standard MySQL setup sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER,STRICT_TRANS_TABLES [mysqldump] quick max_allowed_packet = 16M [myisamchk] key_buffer_size = 8M sort_buffer_size = 8M read_buffer = 4M write_buffer = 4M

mysql_slave

[[email protected]]# vim mysql_slave/conf/my.cnf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
symbolic-links=0
character-set-server = utf8
#skip-networking
innodb_print_all_deadlocks = 1
max_connections = 2000
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 128
max_allowed_packet = 4M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 16M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 28M
key_buffer_size = 4M
thread_cache_size = 8
query_cache_type = 1
query_cache_size = 8M
query_cache_limit = 2M
ft_min_word_len = 4
log-bin = mysql-bin
server-id = 2
binlog_format = mixed
performance_schema = 0
explicit_defaults_for_timestamp
#lower_case_table_names = 1
interactive_timeout = 28800
wait_timeout = 28800
# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER,STRICT_TRANS_TABLES
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M

4、 執行容器
mysql_master:

docker run -p 3307:3306 --name mastermysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

mysql_slave:

docker run -p 3307:3306 --name mastermysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

命令說明:

  • -p 3306:3306:將容器的 3306 埠對映到主機的 3306 埠。
  • -v $PWD/conf:/etc/mysql/conf.d:將主機當前目錄下的conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。
  • -v $PWD/logs:/logs:將主機當前目錄下的 logs 目錄掛載到容器的 /logs。
  • -v $PWD/data:/var/lib/mysql :將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。
  • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 使用者的密碼。

5、進入容器設定主從同步
mysql_master:

[[email protected]]# docker exec -it mastermysql /bin/bash
[email protected]:/# mysql -uroot -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 49
Server version: 5.6.40-log MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> grant all privileges on *.* to [email protected]'%' identified by '123456';
 1 rows in set (0.01 sec)
mysql> flush privileges;
 1 rows in set (0.01 sec)
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 |   1164 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> exit
Bye
[email protected]:/# exit
exit
[[email protected]]#

mysql_slave:

[root@tender]# docker exec -it slavemysql /bin/bash
root@acdf13bf370a:/# mysql -uroot -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.6.40-log MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> change master to
    -> master_host='172.17.0.2',
    -> master_port=3306,
    -> master_user='relpuser',
    -> master_password='123456',
    -> master_log_file='mysql-bin.000004',
    -> master_log_pos=1163;
mysql> start slave;
mysql> show slave status\G;
*************************** 1. row ***************************
            ……
            Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
            ……

在MySQL從節點設定主節點時,master_host選項需要得到mastermysql那臺容器的ip,我們可以連線上mastermysql,鍵入命令cat /etc/hosts 可以看到容器ip:

root@cbf16fcfbc85:/# cat /etc/hosts
127.0.0.1   localhost
……
172.17.0.2  cbf16fcfbc85

至此,Docker+MySQL主從結構搭建完成。使用mysql命令指定埠即可連入主庫。

6、wordpress搭建
軟體壓縮包:wordpress-4.9.4-zh_CN.zip

[[email protected]]# unzip wordpress-4.9.4-zh_CN.zip
[[email protected]]# cd wordpress
[[email protected]]# cp -Rr ./* /usr/local/nginx/html/

# 進入mastermysql,建立wordpress資料庫和使用者
[[email protected]]# docker exec -it mastermysql /bin/bash
[email protected]:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 51
Server version: 5.6.40-log MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database wordpress;
mysql> grant all on wordpress.* to [email protected]"%" identified by '123456';

最後,在瀏覽器訪問部落格IP地址,進入WordPress初始化設定介面,在資料庫名填上wordpress,資料庫地址填上伺服器ip:3307,也就是對映給mastermysql的埠,初始化設定完畢後,wordpress資料庫會自動生成部落格系統所需要的表。
這裡寫圖片描述
這裡寫圖片描述

再在瀏覽器訪問部落格IP地址,進入部落格,wordpress+Docker+MySQL主從結構搭建完成。
這裡寫圖片描述

相關推薦

部落網站資料庫使用Docker實現MySQL主從同步

前言 個人部落格使用了阿里雲的伺服器,此文是筆者實現WordPress+Docker+MySQL主從同步架構的記錄。 環境 Docker version 1.13.1 LNMP: - 阿里雲centos 7.3 - nginx version: ng

Django開發個人部落網站——18、實現部落的分類

我們在設計部落格的資料庫時,分別定義了部落格的分類和標籤,規定部落格與部落格的分類為一對多關係,也就是一個部落格只能有一個分類,而部落格的標籤則為多對多的關係,一個部落格可以有多個標籤。按照功能來劃分的話,也就是部落格的標籤是對部落格分類的一個補充。 考慮到我

Django開發個人部落網站——6、部落網站資料庫的設計

我們先從功能上分析,看看這個部落格網站需要建立哪些表,每個表中都需要什麼欄位。 首先,最主要的是我們的部落格表,名字可以直接叫做Blog,這個表中,肯定要包括以下幾點:部落格的標題、部落格的內容、部落格的發表時間、部落格的修改時間、部落格的分類、部落格的點選量

Docker實現MySQL主從復制(主主復制同理)

clas 文件 mysql的安裝 -- 雙向 res 嘗試 4.0 用戶名   因為最近在學習MySQL,看到很多地方有“分庫分表”,“讀寫分離”的字眼,就想嘗試一下吧! 首先,因為本人經濟能力有限,買不起那麽多服務器,所以就借用Docker來搭建虛擬機來作為兩臺服務器

docker 實現mysql 主從

利用主從模式可以為資料庫提供更好的可靠性。     首先,建立一個名稱為mysql的主容器:    docker run -it -d -e REPLICATION_MASTER=true -e MYSQL_ROOT_PASSWORD=root -P --privileg

從零開始,通過docker實現mysql 主從複製,主主複製,圖文並茂,保證可以實現!

建立docker 容器(可以根據一個映象建立多個容器) docker run -tid 映象ID/usr/sbin/init //centos7版本。使用/usr/sbin/init解決systemctl報錯不能使用的問題docker run -tid 映象ID/bin/bash //非cen

從零開始,通過docker實現mysql 主從複製,圖文並茂,保證可以實現!

   1.安裝映象          第一次實現docker實現mysql 主從複製的時候,各種百度,各種熱折騰,用了業餘幾天時間才實現!!現在把實現的詳細過程,全部寫出來,希望參對大家有所幫助。首先,準備好環境,映象:CentOS-7-x86_64-DVD-1503-01.iso。用虛擬機器安裝,我的

使用docker搭建高併發網站架構實踐7--Mysql主從同步+讀寫分離+讀負載均衡

6. Mysql主從同步+讀寫分離+讀負載均衡 目標: 搭建mysql一主兩從同步 搭建從mysql讀負載均衡 結合web工程實現mysql讀寫分離 整體示意圖: 如圖所示: 192.168.238.129:負載均衡伺服器 192.168.238.128:

通過docker實現mysql主從複製

show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event

【純幹貨】Amoeba實現MySQL主從同步與讀寫分離

exec strong arc all abstract a star status utf prop 【純幹貨】Amoeba實現MySQL主從同步與讀寫分離 一、簡介 amoeba簡介 Amoeba(變形蟲)項目,該開源框架於2008年開始發布一款 Amoeba f

docker安裝mysql主從同步

docke-compose.yml version: '3' services: master_mysql: container_name: master_mysql image: mysql:5.7 ports: - '3306:3306'

dockermysql主從同步配置

執行環境:ubuntu-server:14.04  docker 1.9 安裝映象:sudo docker pull mysql:5.5 一、在本機建立一個檔案用來存放mysql的配置檔案 我是在/o

基於雲端儲存的個人部落網站的設計與實現

**基於雲端儲存的個人部落格網站的設計與實現** 基於雲端儲存的個人部落格網站的設計與實現mysql資料庫建立語句 基於雲端儲存的個人部落格網站的設計與實現oracle資料庫建立語句 基於雲端儲存的個人部落格網站的設計與實現sqlserver資料庫建立語句 基於雲端

Docker快速搭建個人部落網站(wordpress+mysql)

1、基本知識 本著“容器只幹一件事情”的原則,本文會將出現兩個容器,一個Wordpress的網站程式的容器,另一個則是MySQL的資料庫容器,從中將看到兩個容器是如何協同工作的。本文的命令操作具體可見Docker入門。 2、啟動MySQL容器 do

基於Flask實現個人部落網站

一 專案需求      功能需求:基於Flask框架,實現個人部落格 ,包括主頁,文章列表頁,文章詳情頁二 專案核心流程 資料庫 函式和渲染 處理表單並跳轉 讀取資料和渲染 三 專案程式碼實現

github+hexo搭建自己的部落網站(五)進階配置(暢言實現部落的評論)

如何對如何搭建hexo+github可以檢視我第一篇入門文章:http://www.cnblogs.com/chengxs/p/7402174.html 詳細的可以檢視hexo部落格的演示:https://saucxs.github.io/ 同時綁定了域名:http://w

後端小白的,是如何成功搭建 express+mongodb 的簡潔部落網站後端的

前言 blog-node 是採用了主流的前後端分離思想的,主裡只講 後端。 blog-node 專案是 node + express + mongodb 的進行開發的,專案已經開源,專案地址在 github 上。 1. 後端 1.1 已經實現功能 登入

【django】Nginx+uWSGI+Django部署部落網站

一.前言 我們通常將nginx作為伺服器最前端,它將接收WEB的所有請求,統一管理請求。然後nginx把所有靜態請求自己來處理(這是NGINX的強項),並將將所有非靜態請求通過uwsgi傳遞給Django,由Django來進行處理,從而完成一次WEB請求。

Boostrap部落網站搭建(三)-首頁輪播圖實現

1、使用輪播圖外掛這裡我們使用swiper.js外掛並附上下載地址:https://pan.baidu.com/s/1c3MifM4   下面就需要新增HTML程式碼了 <div class="jumbotron container-slider"> &

Django學習(二)——實現個人部落網站

Django網站快速入門 2.1 個人部落格網站規劃 個人部落格具有以下功能: 專案名稱mblog 通過admin管理介面張貼、編輯以及刪除貼文 使用Bookstrap網頁框架 在主頁中顯示每篇文章的標題,及發帖日期 建立專案: dja