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ề support@vinahost.vn 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
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
- Master-master replication
- Group replication
- Multi-master cluster (available for MariaDB, which is the fork of MySQL)
Giới thiệu master-slave replication
Trong bài viết này mình sẽ giới thiệu với các bạn kiểu replication cơ bản và dễ cài đặt nhất là master-slave replication. Với kiểu replication này, master sẽ thực hiện ở cả chế độ read và write, trong khi đó slave sẽ được sử dụng ở chế độ read-only. dữ liệu sẽ được đồng bộ từ server xuống các slave.
## 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
Khởi động docker container master và slave
<master container>
# 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
<slave container>
# docker run -d –name mysql_slave -h h_slaver \
> -e MYSQL_ROOT_HOST=”%” \
> -e MYSQL_ROOT_PASSWORD=”rootpassword” \
> -v /docker/h_slave/config/my.cnf:/etc/mysql/my.cnf \
> -v /docker/h_slave/data:/home/docker/data \
> mysql
Đ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
Kết nối đến mysql trong container sử dụng password đã định nhĩa khi tạo container
# mysql -u root -p
- 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 repl@’%’ identified with mysql_native_password ‘replpassword’;
mysql > grant replication slave on *.* to repl@’%’;
mysql > flush privileges;
Phía SLAVE
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 -p
- Dừng slave (nếu đang chạy)
mysql > stop slave;
- Định nghĩa master và khởi động lại slave
mysql > change master to master_host=’10.10.10.11′, master_user=’repl’, master_password=’replpassword’, master_log_file=’mysql-bin.000004′, master_log_pos=17661521;
mysql > start slave;
- Kiểm tra lại thông tin
mysql > show slave status\G
THAM KHẢO CÁC DỊCH VỤ TẠI VINAHOST:
>> SERVER – COLOCATION – CDN
>> HOSTING
>> WEBSITE
>> TÊN MIỀN
>> SSL