Docker-soạn thảo mysql 8

Bài viết này sẽ rất thực tế và đơn giản ;). Dưới đây bạn có thể thấy các tệp docker-compose.yml , master.cnf, slave.cnf, setup_db.sh. Vui lòng sao chép và dán các tệp này vào dự án của bạn và bỏ qua phần giải thích về chúng. Tôi đã tạo ra chúng để tự giải thích

soạn thảo docker. yml

version: "3.5"services:
database_master:
image: mysql:8.0.30
container_name: "database_master"
restart: unless-stopped
ports:
- 3306:3306
volumes:
- mysqldata_master:/var/lib/mysql
- ./master.cnf:/etc/my.cnf
environment:
- MYSQL_ROOT_PASSWORD=S3cret
- MYSQL_USER=my_db_user
- MYSQL_DATABASE=my_db
- MYSQL_PASSWORD=S3cret
networks:
- mynetwork
database_slave:
image: mysql:8.0.30
container_name: "database_slave"
restart: unless-stopped
depends_on:
- database_master
ports:
- 3307:3306
volumes:
- mysqldata_slave:/var/lib/mysql
- ./slave.cnf:/etc/my.cnf
environment:
- MYSQL_ROOT_PASSWORD=S3cret
- MYSQL_USER=my_db_user
- MYSQL_DATABASE=my_db
- MYSQL_PASSWORD=S3cret
networks:
- mynetwork
networks:
mynetwork:
volumes:
mysqldata_master:
mysqldata_slave:

bậc thầy. cnf

[mysqld]default_authentication_plugin=mysql_native_password
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
server-id=1
log_bin= 1
binlog_format=ROW
binlog_do_db=my_db
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock
!includedir /etc/mysql/conf.d/

nô lệ. cnf

[mysqld]default_authentication_plugin=mysql_native_password
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
server-id=2
log_bin = 1
binlog_do_db=my_db
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock
!includedir /etc/mysql/conf.d/

setup_db. sh

#!/bin/bashsql_slave_user='CREATE USER "mydb_slave_user"@"%" IDENTIFIED BY "mydb_slave_pwd"; GRANT REPLICATION SLAVE ON *.* TO "mydb_slave_user"@"%"; FLUSH PRIVILEGES;'
docker exec database_master sh -c "mysql -u root -pS3cret -e '$sql_slave_user'"
MS_STATUS=`docker exec database_master sh -c 'mysql -u root -pS3cret -e "SHOW MASTER STATUS"'`
CURRENT_LOG=`echo $MS_STATUS | awk '{print $6}'`
CURRENT_POS=`echo $MS_STATUS | awk '{print $7}'`
sql_set_master="CHANGE MASTER TO MASTER_HOST='database_master',MASTER_USER='mydb_slave_user',MASTER_PASSWORD='mydb_slave_pwd',MASTER_LOG_FILE='$CURRENT_LOG',MASTER_LOG_POS=$CURRENT_POS; START SLAVE;"
start_slave_cmd='mysql -u root -pS3cret -e "'
start_slave_cmd+="$sql_set_master"
start_slave_cmd+='"'
docker exec database_slave sh -c "$start_slave_cmd"
docker exec database_slave sh -c "mysql -u root -pS3cret -e 'SHOW SLAVE STATUS \G'"
Hiểu tập tin…

Bạn có thể lưu tất cả các tệp trong cùng một thư mục. Sau đó, bạn có thể mở một phiên cuối, vào thư mục và gõ lệnh. docker-compose up

Khi tất cả các vùng chứa đã được bắt đầu, bạn phải mở một phiên cuối khác, chuyển đến thư mục và gõ lệnh.

[mysqld]default_authentication_plugin=mysql_native_password
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
server-id=1
log_bin= 1
binlog_format=ROW
binlog_do_db=my_db
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock
!includedir /etc/mysql/conf.d/
0

Nếu mọi thứ suôn sẻ, bạn sẽ thấy một cái gì đó như thế

*************************** 1. row ***************************
Slave_IO_State: Waiting for source to send event
Master_Host: database_master
Master_User: mydb_slave_user
Master_Port: 3306

Bây giờ bạn có thể tạo bảng, chèn dữ liệu vào cơ sở dữ liệu

[mysqld]default_authentication_plugin=mysql_native_password
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
server-id=1
log_bin= 1
binlog_format=ROW
binlog_do_db=my_db
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock
!includedir /etc/mysql/conf.d/
1 và dữ liệu sẽ có sẵn trên cơ sở dữ liệu chính và phụ

Làm cách nào để sử dụng MySQL với soạn thảo docker?

Bước 1. Thiết lập Docker. Docker là một nền tảng mở để phát triển, vận chuyển và chạy các ứng dụng. .
Bước 2. Bắt đầu MySQL. MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Oracle dựa trên ngôn ngữ truy vấn có cấu trúc (SQL). .
Bước 3. Kiểm tra MySQL và DDL cơ bản. Kết nối cơ sở dữ liệu

Tôi có thể sử dụng MySQL với Docker không?

Với Docker, bạn có thể chạy hoặc thay đổi quy mô ứng dụng của mình trong mọi môi trường. MySQL là một trong những cơ sở dữ liệu quan hệ tương thích với SQL phổ biến nhất. Chạy MySQL bên trong bộ chứa Docker cho phép bạn tách cơ sở dữ liệu khỏi mã của mình .

Làm cách nào để thay đổi phiên bản MySQL trong docker?

Kết nối với phiên bản máy chủ MySQL từ bên trong vùng chứa. .
Tải xuống MySQL 5. 7 Hình ảnh Docker máy chủ
Bắt đầu một MySQL 5 mới. 7 Docker container với sự trợ giúp của cấu hình và dữ liệu máy chủ cũ
Thực hiện sửa đổi nếu cần
Nếu có máy chủ cộng đồng MySQL, hãy chạy lệnh bên dưới -

Làm cách nào để viết Dockerfile cho MySQL?

Thiết lập Cơ sở dữ liệu MySQL trong Docker .
Tạo Docker Soạn tệp YAML cho bộ chứa MySQL Docker
Kết nối với cơ sở dữ liệu MySQL, chạy trên vùng chứa, sử dụng nhiều phương thức khác nhau
Tạo và chạy nhiều phiên bản MySQL trong bộ chứa Docker