為我的部落格網站資料庫使用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'
docker的mysql主從同步配置
執行環境: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