Hướng dẫn docker install mysql client - docker cài đặt máy khách mysql

Hướng dẫn docker install mysql client - docker cài đặt máy khách mysql

Đã đăng vào thg 7 22, 2019 6:53 SA 1 phút đọc 1 phút đọc

Nếu bạn làm nhiều project sử dụng các phiên bản MySQL khác nhau, có thể bạn sẽ nghĩ đến cách chuyển đổi giữa các phiên bản MySQL mỗi khi làm việc với project sử dụng phiên bản MySQL khác. Tuy nhiên, điều này khá bất tiện. Bài viết này sẽ giúp bạn giải quyết vấn đề đó.

Các bạn có thể xem thêm Hướng dẫn cài đặt nhiều phiên bản PHP chạy đồng thời với Apache trên Ubuntu.

Trong bài viết này, giả định chúng ta cần sử dụng MySQL 5.6 và MySQL 5.7 trên cùng server, và phiên bản MySQL 5.7 được sử dụng nhiều hơn sẽ được chọn làm phiên bản chính. Chúng ta sẽ cài đặt MySQL 5.7 trước. Sau đó, sử dụng Docker để cài đặt phiên bản MySQL 5.6.

Cài đặt MySQL 5.7

Chạy các lệnh sau để cài đặt mysql 5.7:

sudo apt-get update
sudo apt-get install mysql-server-5.7 mysql-server-core-5.7 mysql-client-5.7 mysql-client-core-5.7

Lúc này, MySQL 5.7 được cài đặt và chạy ở port 3306 (port mặc định).

Cài đặt Docker

Chạy lệnh sau để cài đặt docker:

curl -sSL https://get.docker.com/ | sh

Cài đặt MySQL 5.6

Chạy lệnh sau để cài đặt MySQL 5.6 trong docker container.

sudo docker run --name mysql-56-container -p 127.0.0.1:3310:3306 -e MYSQL_ROOT_PASSWORD=rootpassword -d mysql:5.6

Lưu ý: rootpassword là password của user root, có thể thay đổi tuỳ ý.

Container này chứa MySQL 5.6 được cài đặt với port 3306. Nhưng máy chủ sẽ sử dụng port 3310 để chuyển tiếp.

Kết nối đến MySQL 5.6

mysql -u root -p --host=127.0.0.1 --port=3310

Kết nối đến MySQL 5.7

mysql -u root -p

Vậy là xong. Bây giờ bạn đã có MySQL 5.6 và MySQL 5.7 chạy trên cùng máy chủ.

Lưu ý: Khi khởi động lại máy chủ, bạn cần chạy lệnh sau để khởi động lại MySQL 5.6 container:: Khi khởi động lại máy chủ, bạn cần chạy lệnh sau để khởi động lại MySQL 5.6 container:

sudo docker start mysql-56-container

All rights reserved

Trước tiên, nếu máy bạn chưa có Docker, hãy cài đặt theo hướng dẫn tại: https://docs.docker.com/install/

Nội dung chính

  • Giới thiệu về My SQL và các loại MySQL replication
  • Giới thiệu master-slave replication
  • Cập nhật hệ thống và cài đặt docker engine
  • Pull images mysql
  • Điều chỉnh file cấu hình my.cnf
  • Khởi động docker container master và slave
  • # docker run -d –name mysql_slave -h h_slaver \

Các bước cài đặt:

  • Tạo Docker network
  • Khởi tạo Docker container từ Docker image của MySQL
  • Khởi tạo Docker container từ Docker image của phpMyAdmin

1. Tạo Docker network

Việc tạo Docker network giúp cho các Docker container trong cùng 1 network có thể giao tiếp với nhau thông qua container name

Chạy lệnh sau:

docker network create mysql

Lệnh trên sẽ tạo một Docker network có tên là mysql. Chúng ta sẽ đặt 2 Docker container chạy MySQL và phpMyAdmin bên trong network mysql này

2. Khởi tạo Docker container từ Docker image của MySQL

Trước tiên, hãy tạo một thư mục dùng để lưu dữ liệu của Docker container, ví dụ: /home/moe/mysql_data

Sau đó, chạy lệnh:

docker run --name learn_mysql --network mysql -v /home/moe/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7

trong đó:

  • --name learn_mysql: tên của container. Tên này sẽ được sử dụng ở bước sau, khi chúng ta khới tạo container chạy phpMyAdmin
  • --network mysql: đặt container này trong network mysql vừa được tạo ở bước 1
  • -v /home/moe/mysql_data:/var/lib/mysql : Volume dữ liệu từ container ra bên ngoài thư mục mysql_data mà chúng ta vừa tạo
  • -e MYSQL_ROOT_PASSWORD=123: đặt password cho user root. Mỗi một MySQL server khi được khởi tạo đều sẽ có một user root ban đầu.

3. Khởi tạo Docker container từ Docker image của phpMyAdmin

Chạy lệnh sau:

docker run --name myadmin -d --network mysql -p 8081:80 -e PMA_HOST=learn_mysql phpmyadmin/phpmyadmin

trong đó:

  • --name learn_mysql: tên của container. Tên này sẽ được sử dụng ở bước sau, khi chúng ta khới tạo container chạy phpMyAdmin
  • --network mysql: đặt container này trong network mysql vừa được tạo ở bước 1
  • -v /home/moe/mysql_data:/var/lib/mysql : Volume dữ liệu từ container ra bên ngoài thư mục mysql_data mà chúng ta vừa tạo
  • -e MYSQL_ROOT_PASSWORD=123: đặt password cho user root. Mỗi một MySQL server khi được khởi tạo đều sẽ có một user root ban đầu.

3. Khởi tạo Docker container từ Docker image của phpMyAdmin

--name myadmin: tên container

--network mysql: đặt container này vào trong network mysql. Lúc này 2 container chạy phpMyAdmin và MySQL đều ở trong cùng 1 network

-e PMA_HOST=learn_mysql: địa chỉ IP của MySQL server. Vì chúng ta đã đặt 2 container chạy phpMyAdmin và MySQL trong cùng 1 network (mysql) nên chúng ta có thể dùng tên container chạy MySQL (learn_mysql) cho biến môi trường nàyroot, mật khẩu chính là mật khẩu bạn đã đặt cho biến môi trường MYSQL_ROOT_PASSWORD khi khởi tạo MySQL container, như trong bài viết này thì mật khẩu tôi đặt là 123root, mật khẩu chính là mật khẩu bạn đã đặt cho biến môi trường MYSQL_ROOT_PASSWORD khi khởi tạo MySQL container, như trong bài viết này thì mật khẩu tôi đặt là 123

-p 8081:80: mapping cổng 80 của container với cổng 8081 của máy host

Sau khi hoàn thành cả 3 bước trên, chúng ta truy cập vào địa chỉ: http://localhost:8081/, xuất hiện màn hình:

--name myadmin: tên container

--network mysql: đặt container này vào trong network mysql. Lúc này 2 container chạy phpMyAdmin và MySQL đều ở trong cùng 1 network

-e PMA_HOST=learn_mysql: địa chỉ IP của MySQL server. Vì chúng ta đã đặt 2 container chạy phpMyAdmin và MySQL trong cùng 1 network (mysql) nên chúng ta có thể dùng tên container chạy MySQL (learn_mysql) cho biến môi trường nàyroot, mật khẩu chính là mật khẩu bạn đã đặt cho biến môi trường MYSQL_ROOT_PASSWORD khi khởi tạo MySQL container, như trong bài viết này thì mật khẩu tôi đặt là 123 MySQL Database Replication Trên Docker. Nếu bạn cần hỗ trợ, xin vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext.3, email về  hoặc chat với VinaHost qua livechat https://livechat.vinahost.vn/chat.php.

Giới thiệu về My SQL và các loại MySQL replication

-p 8081:80: mapping cổng 80 của container với cổng 8081 của máy host

Sau khi hoàn thành cả 3 bước trên, chúng ta truy cập vào địa chỉ: http://localhost:8081/, xuất hiện màn hình:

Bài viết này sẽ giới thiệu đến bạn kiến thức về MySQL Database Replication Trên Docker. Nếu bạn cần hỗ trợ, xin vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext.3, email về  hoặc chat với VinaHost qua livechat https://livechat.vinahost.vn/chat.php. MySQL Database Replication Trên Docker. Nếu bạn cần hỗ trợ, xin vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext.3, email về  hoặc chat với VinaHost qua livechat https://livechat.vinahost.vn/chat.php.

  • Mysql là một trong những source database phổ biến nhất trên thế giớ. Dễ dàng để cài đặt và sử dụng. Hiện nay đã có rất nhiều CMS lớn sử dụng mysql như là database type mặc định như wordpress, mangeto.
  • Với những hệ thống lớn, hệ thống database có nhu cầu xử lý nhanh, ổn định và khả năng dự phòng. Do vậy các mô hình replication database đã được ra đời để thỏa mãn những nhu cầu trên.
  • Dưới đây là danh sách những loại mysql replication phổ biến nhất hiện tại:
  • Master-slave replication

Giới thiệu master-slave replication

Cập nhật hệ thống và cài đặt docker engine

## Demo mô hình replication master-slave trên docker.

Cập nhật hệ thống và cài đặt docker engine

# yum update

# sudo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

# sudo yum install docker-ce-cli containerd.io docker-ce

Pull images mysql

# docker pull mysql

Điều chỉnh file cấu hình my.cnf

# docker run –rm -v /docker:/home/docker mysql cp /etc/mysql/my.cnf /home/docker

* /docker/my.cnf

bind-address = 0.0.0.0

server-id = 1

log_bin = mysql-bin

Note: server-id là id duy nhất cho mỗi máy trong group replication: server-id là id duy nhất cho mỗi máy trong group replication: server-id là id duy nhất cho mỗi máy trong group replication

Khởi động docker container master và slave

# docker run –rm -v /docker:/home/docker mysql cp /etc/mysql/my.cnf /home/docker

* /docker/my.cnf

bind-address = 0.0.0.0

server-id = 1

log_bin = mysql-bin

Note: server-id là id duy nhất cho mỗi máy trong group replication: server-id là id duy nhất cho mỗi máy trong group replication

Khởi động docker container master và slave

# docker run –rm -v /docker:/home/docker mysql cp /etc/mysql/my.cnf /home/docker

* /docker/my.cnf

bind-address = 0.0.0.0

server-id = 1

log_bin = mysql-bin

Note: server-id là id duy nhất cho mỗi máy trong group replication: server-id là id duy nhất cho mỗi máy trong group replication

Khởi động docker container master và slave

# docker run -d –name mysql_master -h h_master \

> -e MYSQL_ROOT_HOST=”%” \

> -e MYSQL_ROOT_PASSWORD=”rootpassword” \

> -v /docker/h_master/config/my.cnf:/etc/mysql/my.cnf \

> -v /docker/h_master/data:/home/docker/data \

> mysql

  1. # docker run -d –name mysql_slave -h h_slaver \

> -v /docker/h_slave/config/my.cnf:/etc/mysql/my.cnf \

  1. > -v /docker/h_slave/data:/home/docker/data \

Điều chỉnh thông tin master và slave

Phía MASTER

Kết nối đến container.

# docker exec -it mysql_master bash

> -e MYSQL_ROOT_PASSWORD=”rootpassword” \

> -v /docker/h_master/config/my.cnf:/etc/mysql/my.cnf \

> -v /docker/h_master/data:/home/docker/data \

> mysql

  1. # docker run -d –name mysql_slave -h h_slaver \

> -v /docker/h_slave/config/my.cnf:/etc/mysql/my.cnf \

  1. > -v /docker/h_slave/data:/home/docker/data \

Điều chỉnh thông tin master và slave

Phía MASTER

  1. Kết nối đến container.

# docker exec -it mysql_master bash

Kết nối đến mysql trong container sử dụng password đã định nhĩa khi tạo container

# mysql -u root -pSERVERCOLOCATION – CDN

Ghi nhận file log-bin và postion để replication.

mysql > show master status\G

Tạo user dùng cho client kết nối replication, grant quyền replication.

mysql > create user [email protected]’%’ identified with mysql_native_password ‘replpassword’;

mysql > grant replication slave on *.* to [email protected]’%’;

mysql > flush privileges;SERVER – COLOCATION – CDNSSL

Phía SLAVE