Cách cấu hình MySQL Multi-Master Replication trên Oracle Linux

theanh

Administrator
Nhân viên
Hướng dẫn này giải thích cách thiết lập và cấu hình MySQL multi-master replication trên Oracle Linux. Như tất cả các bạn đã biết, MySQL là một sản phẩm cơ sở dữ liệu hàng đầu nổi tiếng đã được chứng minh là sẵn sàng cho doanh nghiệp. Vì dữ liệu rất quan trọng đối với mọi tổ chức, hầu hết các quản trị viên cơ sở dữ liệu đang tìm kiếm một giải pháp phù hợp để thiết lập tính khả dụng cao nhằm đảm bảo người dùng có thể truy cập dữ liệu của họ 24/7. MySQL replication là một giải pháp có thể đảm bảo chính sách khả dụng cao. Trên hết, MySQL replication cũng có thể giúp các quản trị viên cơ sở dữ liệu phân phối tải trên nhiều máy chủ cơ sở dữ liệu bằng cách cân bằng tải các yêu cầu ĐỌC và GHI. Thật không may, tính năng sao chép cơ bản chỉ có thể mang lại lợi ích cho các yêu cầu ĐỌC. Do đó, MySQL multi-master replication đã được giới thiệu để cung cấp tính năng sao chép cho cả yêu cầu GHI.


1. Lưu ý sơ bộ​

Đối với hướng dẫn này, tôi đang sử dụng Oracle Linux 6.8 ở phiên bản 32 bit. Xin lưu ý rằng mặc dù cấu hình được thực hiện trên Oracle Linux, nhưng các bước và cấu hình chủ yếu giống với CentOS và Red Hat Linux. Trong hướng dẫn này, chúng ta sẽ sử dụng 2 máy chủ. Trên mỗi máy chủ, chúng ta sẽ thiết lập cơ sở dữ liệu MySQL và cấu hình nó để sao chép đa chủ. Vào cuối hướng dẫn này, chúng ta sẽ thấy rằng bất kỳ yêu cầu ĐỌC hoặc GHI nào bao gồm các yêu cầu DDL (Ngôn ngữ định nghĩa dữ liệu) và DML (Ngôn ngữ thao tác dữ liệu) sẽ được chạy trên cả hai máy chủ.


2. Giai đoạn cài đặt​

Đối với giai đoạn cài đặt, chúng ta chỉ yêu cầu gói máy chủ MySQL cho giai đoạn cấu hình và máy khách MySQL để truy cập môi trường cơ sở dữ liệu. Cả hai gói đều yêu cầu phải cài đặt một số phụ thuộc. Trước tiên, hãy xác nhận phiên bản Hệ điều hành của chúng ta và ghi lại địa chỉ IP để cấu hình trước.
Mã:
[root@DB1 ~]# lsb_release -a 
Phiên bản LSB: :base-4.0-ia32:base-4.0-noarch:core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch 
ID nhà phân phối: OracleServer 
Mô tả: Oracle Linux Server bản phát hành 6.8 
Bản phát hành: 6.8 
Tên mã: n/a 
 
[root@DB1 ~]# ifconfig 
eth0 Liên kết encap:Ethernet HWaddr 08:00:27:42:C0:4C 
inet addr:192.168.43.11 Bcast:192.168.43.255 Mask:255.255.255.0 
inet6 addr: fe80::a00:27ff:fe42:c04c/64 Phạm vi:Liên kết 
PHÁT SÓNG LÊN ĐANG CHẠY PHÁT NHIỀU PHÁT MTU:1500 Số liệu:1 
Gói RX:544 lỗi:0 bị loại bỏ:0 tràn:0 khung:0 
Gói TX:79 lỗi:0 bị loại bỏ:0 tràn:0 sóng mang:0 
va chạm:0 txqueuelen:1000 
Byte RX:51274 (50,0 KiB) Byte TX:9474 (9,2 KiB) 
 
lo Liên kết encap:Vòng lặp cục bộ 
inet addr:127.0.0.1 Mặt nạ: 255.0.0.0 
inet6 addr: ::1/128 Phạm vi: Máy chủ 
 LẶP LẠI LÊN ĐANG CHẠY MTU: 65536 Số liệu: 1 
Gói RX: 4 lỗi: 0 đã loại bỏ: 0 tràn: 0 khung: 0 
Gói TX: 4 lỗi: 0 đã loại bỏ: 0 tràn: 0 sóng mang: 0 
va chạm: 0 txqueuelen: 0 
RX byte: 240 (240,0 b) TX byte: 240 (240,0 b)
Bây giờ hãy thực hiện tương tự trên máy chủ khác.
Mã:
[root@DB2 ~]# lsb_release -a 
Phiên bản LSB: :base-4.0-ia32:base-4.0-noarch:core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch 
ID nhà phân phối: OracleServer 
Mô tả: Oracle Linux Server bản phát hành 6.8 
Bản phát hành: 6.8 
Tên mã: n/a 
 
[root@DB2 ~]# ifconfig 
eth0 Liên kết encap:Ethernet HWaddr 09:00:30:42:C1:5D 
inet addr:192.168.43.12 Bcast:192.168.43.255 Mặt nạ:255.255.255.0 
inet6 địa chỉ: fe80::a00:27ff:fe42:c04c/64 Phạm vi:Liên kết 
PHÁT SÓNG LÊN ĐANG CHẠY PHÁT NHIỀU PHÁT MTU:1500 Số liệu:1 
Gói RX:544 lỗi:0 bị loại bỏ:0 tràn:0 khung:0 
Gói TX:79 lỗi:0 bị loại bỏ:0 tràn:0 sóng mang:0 
va chạm:0 txqueuelen:1000 
Byte RX:51274 (50,0 KiB) Byte TX:9474 (9,2 KiB) 
 
Liên kết lo encap:Vòng lặp cục bộ 
inet địa chỉ:127.0.0.1 Mặt nạ:255.0.0.0 
inet6 addr: ::1/128 Phạm vi: Máy chủ 
LÊN VÒNG LẶP LẠI ĐANG CHẠY MTU:65536 Số liệu:1 
Gói RX:4 lỗi:0 bị loại bỏ:0 tràn:0 khung:0 
Gói TX:4 lỗi:0 bị loại bỏ:0 tràn:0 sóng mang:0 
va chạm:0 txqueuelen:0 
RX byte:240 (240.0 b) TX byte:240 (240.0 b)
Tiếp theo, thêm địa chỉ IP vào tệp máy chủ của máy chủ. Thực hiện tương tự trên cả hai máy chủ như bên dưới.
Mã:
[root@DB1 ~]# vi /etc/hosts 
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 
 
192.168.43.11 DB1 
192.168.43.12 DB2
Tiếp theo, tôi sẽ cấu hình một kho lưu trữ mới để cài đặt máy chủ MySQL và các gói máy khách MySQL thông qua tiện ích yum. Vui lòng thực hiện việc này trên CẢ HAI máy chủ.
Mã:
[root@DB1 ~]# cd /etc/yum.repos.d/ 
[root@DB1 yum.repos.d]# ls 
OEL6.repo 
 
[root@DB1 yum.repos.d]# wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm 
--2017-05-22 09:43:59-- http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm 
Đang giải quyết repo.mysql.com... 23.8.231.210 
Đang kết nối tới repo.mysql.com|23.8.231.210|:80... đã kết nối. 
Yêu cầu HTTP đã được gửi, đang chờ phản hồi... 200 OK 
Độ dài: 5824 (5,7K) [application/x-redhat-package-manager] 
Đang lưu vào: "mysql-community-release-el6-5.noarch.rpm" 
 
100%[======================================================>] 5.824 --.-K/giây trong 0 giây 
 
2017-05-22 09:44:00 (264 MB/giây) - "mysql-community-release-el6-5.noarch.rpm" đã lưu [5824/5824] 
 
[root@DB1 yum.repos.d]# ls 
OEL6.repo mysql-community-release-el6-5.noarch.rpm 
 
[root@DB1 yum.repos.d]# rpm -Uvh mysql-community-release-el6-5.noarch.rpm 
Đang chuẩn bị... ################################################# [100%] 
1:mysql-community-release############################################### [100%] 
 
[root@DB1 yum.repos.d]# ls 
CentOS.repo mysql-community.repo 
mysql-community-release-el6-5.noarch.rpm mysql-community-source.repo
Kho lưu trữ mới cho phiên bản MySQL mới nhất đã được cài đặt. Hãy bật chúng lên.
Mã:
[root@DB1 yum.repos.d]# vi mysql-community.repo 
# Bật để sử dụng MySQL 5.6 
[mysql56-community] 
name=MySQL 5.6 Community Server 
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/ 
enabled=1 
gpgcheck=1 
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Sau khi hoàn tất, hãy đảm bảo rằng các gói MySQL đã khả dụng.
Mã:
[root@DB1 yum.repos.d]# rpm -qa|grep -i mysql 
mysql-community-release-el6-5.noarch
Tuyệt, giờ chúng ta đã hoàn thành được một nửa chặng đường. Vì không có gói MySQL nào được cài đặt trên máy chủ hiện tại, chúng ta hãy bắt đầu cài đặt gói. Dưới đây là các bước.
Mã:
[root@DB1 yum.repos.d]# 
[root@DB1 yum.repos.d]# yum install mysql-server mysql-client 
Các plugin đã tải: fastestmirror, refresh-packagekit, security 
Thiết lập quy trình cài đặt 
Kho lưu trữ 'OEL' bị thiếu tên trong cấu hình, sử dụng id 
Xác định các bản sao nhanh nhất 
epel/metalink | 6,2 kB 00:00 
* epel: epel.mirror.angkasa.id 
* remi-php56: remi.mirror.wearetriple.com 
* remi-safe: remi.mirror.wearetriple.com 
OEL | 3,7 kB 00:00 
epel | 4,3 kB 00:00 
epel/primary_db | 5,9 MB 00:00 
mysql-connectors-community | 2,5 kB 00:00 
mysql-connectors-community/primary_db | 15 kB 00:00 
mysql-tools-community | 2,5 kB 00:00 
mysql-tools-community/primary_db | 35 kB 00:00 
mysql56-community | 2,5 kB 00:00 
mysql56-community/primary_db | 183 kB 00:00 
remi-php56 | 2,9 kB 00:00 
remi-php56/primary_db | 218 kB 00:01 
remi-safe | 2,9 kB 00:00 
remi-safe/primary_db | 725 kB 00:02 
Gói mysql-server đã lỗi thời bởi mysql-community-server, đang cố gắng cài đặt mysql-community-server-5.6.36-2.el6.i686 thay thế 
Không có gói mysql-client nào khả dụng. 
Giải quyết các phụ thuộc 
--> Đang chạy kiểm tra giao dịch 
---> Gói mysql-community-server.i686 0:5.6.36-2.el6 sẽ được cài đặt 
--> Đang xử lý phụ thuộc: mysql-community-common(i686) = 5.6.36-2.el6 cho gói: mysql-community-server-5.6.36-2.el6.i686 
--> Xử lý phụ thuộc: mysql-community-client(i686) >= 5.6.10 cho gói: mysql-community-server-5.6.36-2.el6.i686 
--> Xử lý phụ thuộc: perl(DBI) cho gói: mysql-community-server-5.6.36-2.el6.i686 
--> Kiểm tra giao dịch đang chạy 
---> Gói mysql-community-client.i686 0:5.6.36-2.el6 sẽ được cài đặt 
--> Xử lý phụ thuộc: mysql-community-libs(i686) >= 5.6.10 cho gói: mysql-community-client-5.6.36-2.el6.i686 
---> Gói mysql-community-common.i686 0:5.6.36-2.el6 sẽ được cài đặt 
---> Gói perl-DBI.i686 0:1.609-4.el6 sẽ được cài đặt 
--> Kiểm tra giao dịch đang chạy 
---> Gói mysql-community-libs.i686 0:5.6.36-2.el6 sẽ được cài đặt 
--> Đã hoàn tất giải quyết sự phụ thuộc 
 
Đã giải quyết sự phụ thuộc 
 
============================================================================================================================================================================================================================================================================================================ 
Đang cài đặt: 
mysql-community-server i686 5.6.36-2.el6 mysql56-community 55 M 
Cài đặt cho các phụ thuộc: 
mysql-community-client i686 5.6.36-2.el6 mysql56-community 18 M 
mysql-community-common i686 5.6.36-2.el6 mysql56-community 308 k 
mysql-community-libs i686 5.6.36-2.el6 mysql56-community 1.9 M 
perl-DBI i686 1.609-4.el6 CentOS 705 k 
 
Tóm tắt giao dịch 
=================================================================================================================== 
Cài đặt 5 gói 
 
Tổng kích thước tải xuống: 76 M 
Kích thước đã cài đặt: 338 M 
Như vậy có ổn không [y/N]: y 
Đang tải xuống các gói: 
(1/5): mysql-community-client-5.6.36-2.el6.i686.rpm | 18 MB 00:01 
(2/5): mysql-community-common-5.6.36-2.el6.i686.rpm | 308 kB 00:00 
(3/5): mysql-community-libs-5.6.36-2.el6.i686.rpm | 1,9 MB 00:00 
(4/5): mysql-community-server-5.6.36-2.el6.i686.rpm | 55 MB 00:02 
(5/5): perl-DBI-1.609-4.el6.i686.rpm | 705 kB 00:00 
---------------------------------------------------------------------------------------------------------------- 
Tổng cộng 18 MB/giây | 76 MB 00:04 
cảnh báo: rpmts_HdrFromFdno: Tiêu đề V3 DSA/SHA1 Chữ ký, ID khóa 5072e1f5: NOKEY 
Đang lấy khóa từ tệp:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 
Đang nhập khóa GPG 0x5072E1F5: 
ID người dùng: MySQL Release Engineering  
Gói: mysql-community-release-el6-5.noarch (đã cài đặt) 
Từ: tệp:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 
Như vậy có ổn không [y/N]: y 
Đang chạy rpm_check_debug 
Đang chạy Kiểm tra giao dịch 
Kiểm tra giao dịch thành công 
Đang chạy Giao dịch 
Cảnh báo: RPMDB đã thay đổi bên ngoài yum. 
Đang cài đặt: mysql-community-common-5.6.36-2.el6.i686 1/5 
Đang cài đặt: mysql-community-libs-5.6.36-2.el6.i686 2/5 
Đang cài đặt: mysql-community-client-5.6.36-2.el6.i686 3/5 
Đang cài đặt: perl-DBI-1.609-4.el6.i686 4/5 
Đang cài đặt: mysql-community-server-5.6.36-2.el6.i686 5/5 
Đang xác minh: perl-DBI-1.609-4.el6.i686 1/5 
Đang xác minh: mysql-community-server-5.6.36-2.el6.i686 2/5 
Đang xác minh: mysql-community-libs-5.6.36-2.el6.i686 3/5 
Đang xác minh: mysql-community-common-5.6.36-2.el6.i686 4/5 
Đang xác minh: mysql-community-client-5.6.36-2.el6.i686 5/5 
 
Đã cài đặt: 
mysql-community-server.i686 0:5.6.36-2.el6 
 
Đã cài đặt phần phụ thuộc: 
mysql-community-client.i686 0:5.6.36-2.el6 mysql-community-common.i686 0:5.6.36-2.el6 
mysql-community-libs.i686 0:5.6.36-2.el6 perl-DBI.i686 0:1.609-4.el6 
 
Hoàn tất!
Tuyệt vời, bây giờ quá trình cài đặt đã hoàn tất. Khởi động daemon MySQL lần đầu tiên.
Mã:
[root@DB1 yum.repos.d]# service mysqld restart 
Đang dừng mysqld: [OK] 
Đang khởi tạo cơ sở dữ liệu MySQL: 2017-05-22 09:55:53 0 [Cảnh báo] TIMESTAMP với giá trị DEFAULT ngầm định đã lỗi thời. Vui lòng sử dụng tùy chọn máy chủ --explicit_defaults_for_timestamp (xem tài liệu để biết thêm chi tiết). 
2017-05-22 09:55:53 0 [Lưu ý] Bỏ qua giá trị --secure-file-priv vì máy chủ đang chạy với --bootstrap. 
2017-05-22 09:55:53 0 [Lưu ý] /usr/sbin/mysqld (mysqld 5.6.36) bắt đầu như tiến trình 18645 ... 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Sử dụng atomic để tham chiếu số lượng trang nhóm bộ đệm 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Đống bộ nhớ InnoDB bị vô hiệu hóa 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Mutexe và rw_lock sử dụng các hàm tích hợp atomic của GCC 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Rào cản bộ nhớ không được sử dụng 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Bảng nén sử dụng zlib 1.2.3 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Sử dụng AIO gốc của Linux 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Sử dụng lệnh CPU crc32 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Đang khởi tạo nhóm bộ đệm, kích thước = 128,0M 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Đã hoàn tất khởi tạo nhóm bộ đệm 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Tệp dữ liệu được chỉ định đầu tiên ./ibdata1 không tồn tại: cần tạo cơ sở dữ liệu mới! 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Đặt kích thước tệp ./ibdata1 thành 12 MB 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Cơ sở dữ liệu ghi tệp đầy đủ về mặt vật lý: đợi... 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Đặt kích thước tệp nhật ký ./ib_logfile101 thành 48 MB 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Đặt kích thước tệp nhật ký ./ib_logfile1 thành 48 MB 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Đổi tên tệp nhật ký ./ib_logfile101 đến ./ib_logfile0 
2017-05-22 09:55:53 18645 [Cảnh báo] InnoDB: Đã tạo tệp nhật ký mới, LSN=45781 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Không tìm thấy bộ đệm Doublewrite: đang tạo 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Đã tạo bộ đệm Doublewrite 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Có 128 phân đoạn khôi phục đang hoạt động. 
2017-05-22 09:55:53 18645 [Cảnh báo] InnoDB: Đang tạo bảng hệ thống ràng buộc khóa ngoại. 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Đã tạo bảng hệ thống ràng buộc khóa ngoại 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Đang tạo bảng hệ thống không gian bảng và tệp dữ liệu. 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Đã tạo bảng hệ thống không gian bảng và tệp dữ liệu. 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Đang chờ quá trình xóa bắt đầu 
2017-05-22 09:55:53 18645 [Lưu ý] InnoDB: Đã bắt đầu 5.6.36; số thứ tự nhật ký 0 
2017-05-22 09:55:54 18645 [Lưu ý] Binlog kết thúc 
2017-05-22 09:55:54 18645 [Lưu ý] InnoDB: FTS tối ưu hóa luồng thoát. 
2017-05-22 09:55:54 18645 [Lưu ý] InnoDB: Đang bắt đầu tắt máy... 
2017-05-22 09:55:55 18645 [Lưu ý] InnoDB: Đã tắt máy hoàn tất; số thứ tự nhật ký 1625977 
 
 
2017-05-22 09:55:55 0 [Cảnh báo] DẤU THỜI GIAN với giá trị MẶC ĐỊNH ngầm định đã lỗi thời. Vui lòng sử dụng tùy chọn máy chủ --explicit_defaults_for_timestamp (xem tài liệu để biết thêm chi tiết). 
2017-05-22 09:55:55 0 [Lưu ý] Bỏ qua giá trị --secure-file-priv vì máy chủ đang chạy với --bootstrap. 
2017-05-22 09:55:55 0 [Lưu ý] /usr/sbin/mysqld (mysqld 5.6.36) bắt đầu như tiến trình 18667 ... 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: Sử dụng atomic để tham chiếu số lượng trang nhóm bộ đệm 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: Đống bộ nhớ InnoDB bị vô hiệu hóa 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: Mutexe và rw_lock sử dụng các hàm tích hợp atomic của GCC 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: Rào cản bộ nhớ không được sử dụng 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: Bảng nén sử dụng zlib 1.2.3 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: Sử dụng AIO gốc của Linux 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: Sử dụng lệnh CPU crc32 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: Đang khởi tạo nhóm bộ đệm, kích thước = 128,0M 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: Đã hoàn tất khởi tạo nhóm bộ đệm 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: Định dạng tệp được hỗ trợ cao nhất là Barracuda. 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: 128 phân đoạn khôi phục đang hoạt động. 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: Đang chờ bắt đầu xóa 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: 5.6.36 đã bắt đầu; số thứ tự nhật ký 1625977 
2017-05-22 09:55:55 18667 [Lưu ý] Binlog kết thúc 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: FTS tối ưu hóa luồng thoát. 
2017-05-22 09:55:55 18667 [Lưu ý] InnoDB: Đang bắt đầu tắt máy... 
2017-05-22 09:55:57 18667 [Lưu ý] InnoDB: Đã tắt máy hoàn tất; số thứ tự nhật ký 1625987 
 
 
 
 VUI LÒNG NHỚ ĐẶT MẬT KHẨU CHO NGƯỜI DÙNG root MySQL! 
Để thực hiện, hãy khởi động máy chủ, sau đó đưa ra các lệnh sau: 
 
/usr/bin/mysqladmin -u root password 'new-password' 
/usr/bin/mysqladmin -u root -h vdevknime1 password 'new-password' 
 
Ngoài ra, bạn có thể chạy: 
 
/usr/bin/mysql_secure_installation 
 
cũng sẽ cung cấp cho bạn tùy chọn xóa cơ sở dữ liệu thử nghiệm và người dùng ẩn danh được tạo theo mặc định. Điều này 
được khuyến nghị mạnh mẽ cho các máy chủ sản xuất. 
 
Xem hướng dẫn để biết thêm hướng dẫn. 
 
Vui lòng báo cáo bất kỳ sự cố nào tại http://bugs.mysql.com/ 
 
Thông tin mới nhất về MySQL có sẵn trên web tại 
 
http://www.mysql.com 
 
Hỗ trợ MySQL bằng cách mua hỗ trợ/giấy phép tại http://shop.mysql.com 
 
Lưu ý: tệp cấu hình mặc định mới chưa được tạo. 
Vui lòng đảm bảo tệp cấu hình của bạn là tệp hiện tại 
 
CẢNH BÁO: Tệp cấu hình mặc định /etc/my.cnf tồn tại trên hệ thống 
Tệp này sẽ được máy chủ MySQL đọc theo mặc định 
Nếu bạn không muốn sử dụng tệp này, hãy xóa tệp này hoặc sử dụng 
#NAME? 
 
[ OK ] 
Đang khởi động mysqld: [ OK ]
Tuyệt, giờ dịch vụ máy chủ MySQL của chúng ta đã hoạt động. Hãy xác nhận bằng cách liệt kê cổng được dịch vụ MySQL sử dụng. Theo mặc định, MySQL sẽ sử dụng cổng 3306 khi khởi động dịch vụ. Dưới đây là các lệnh:
Mã:
[root@DB1 yum.repos.d]# netstat -apn|grep -i mysql 
tcp 0 0 :::3306 :::* LISTEN 2139/mysqld 
unix 2 [ ACC ] STREAM LISTENING 16018 2139/mysqld /var/lib/mysql/mysql.sock
Bây giờ, hãy thiết lập mật khẩu ban đầu cho người dùng root MySQL để đảm bảo chúng ta không bỏ lỡ bảo mật cơ bản cho máy chủ MySQL của mình.
Mã:
[root@DB1 yum.repos.d]# mysqladmin -u root password "Pass1234" 
Cảnh báo: Sử dụng mật khẩu trên giao diện dòng lệnh có thể không an toàn. 
 
[root@DB1 yum.repos.d]# mysql -u root -p 
Nhập mật khẩu: 
Chào mừng đến với màn hình MySQL. Các lệnh kết thúc bằng ; hoặc \g. 
ID kết nối MySQL của bạn là 5 
Phiên bản máy chủ: 5.6.36 MySQL Community Server (GPL) 
 
Bản quyền (c) 2000, 2017, Oracle và/hoặc các chi nhánh của Oracle. Mọi quyền được bảo lưu. 
 
Oracle là nhãn hiệu đã đăng ký của Oracle Corporation và/hoặc các chi nhánh của Oracle. Các tên khác có thể là nhãn hiệu của 
chủ sở hữu tương ứng. 
 
Gõ 'help;' hoặc '\h' để được trợ giúp. Gõ '\c' để xóa câu lệnh nhập hiện tại. 
 
mysql> select user(); 
+----------------+ 
| user() | 
+----------------+ 
| root@localhost | 
+----------------+ 
1 hàng trong bộ (0,00 giây)
Hoàn tất giai đoạn cài đặt. Chúng ta hãy chuyển sang cấu hình thiết lập sao chép đa máy chủ.

3. Giai đoạn cấu hình​

Chúng ta hãy vào bên trong tệp cấu hình MySQL my.cnf và thực hiện các thay đổi như bên dưới trên máy chủ DB1.
Mã:
[root@DB1 ~]# vi /etc/my.cnf 
[mysqld] 
datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock 
port=3306 
innodb_file_per_table=ON 
pid-file=/var/lib/mysql/mysqld.pid 
 
server-id = 11 
log_bin = /var/log/mysql/mysql-bin.log 
binlog_do_db = test_rep
Dưới đây là giải thích về cấu hình:
  • server-id ==> ID sao chép
  • log_bin ==> Tệp nhật ký được sử dụng cho hoạt động sao chép
  • binlog_do_db ==> Cơ sở dữ liệu liên quan đến quy trình sao chép
Sau khi hoàn tất, hãy vào môi trường máy chủ MySQL và tạo cơ sở dữ liệu liên quan và chỉ định người dùng cho quy trình sao chép.
Mã:
[root@DB1 ~]# mysql -u root -p 
Nhập mật khẩu: 
Chào mừng đến với màn hình MySQL. Các lệnh kết thúc bằng ; hoặc \g. 
ID kết nối MySQL của bạn là 5 
Phiên bản máy chủ: 5.6.36-log MySQL Community Server (GPL) 
 
Bản quyền (c) 2000, 2017, Oracle và/hoặc các chi nhánh của Oracle. Mọi quyền được bảo lưu. 
 
Oracle là nhãn hiệu đã đăng ký của Oracle Corporation và/hoặc các chi nhánh của Oracle. Các tên khác có thể là nhãn hiệu của 
chủ sở hữu tương ứng. 
 
Nhập 'help;' hoặc '\h' để được trợ giúp. Nhập '\c' để xóa câu lệnh nhập hiện tại. 
 
mysql> show databases; 
+------------------+ 
| Database | 
+------------------+ 
| information_schema | 
| mysql | 
| performance_schema | 
| test | 
+------------------+ 
4 hàng trong tập hợp (0,01 giây) 
 
mysql> create database test_rep; 
Query OK, 1 hàng bị ảnh hưởng (0,01 giây) 
 
mysql> create user 'replicator'@'DB2' được xác định bởi 'Rep1234'; 
Query OK, 0 hàng bị ảnh hưởng (0,01 giây) 
 
mysql> grant replication slave on *.* to 'replicator'@'DB2'; 
Truy vấn OK, 0 hàng bị ảnh hưởng (0,00 giây)
Xong, bây giờ hãy khởi động lại máy chủ MySQL và xem cấu hình đã được kích hoạt hay chưa. Dưới đây là các bước:
Mã:
[root@DB1 yum.repos.d]# service mysqld restart 
Dừng mysqld: [ OK ] 
Đang khởi động mysqld: [ OK ] 
 
[root@DB1 ~]# mysql -u root -p 
Nhập mật khẩu: 
Chào mừng đến với màn hình MySQL. Các lệnh kết thúc bằng ; hoặc \g. 
ID kết nối MySQL của bạn là 5 
Phiên bản máy chủ: 5.6.36-log MySQL Community Server (GPL) 
 
Bản quyền (c) 2000, 2017, Oracle và/hoặc các chi nhánh của Oracle. Mọi quyền được bảo lưu. 
 
Oracle là nhãn hiệu đã đăng ký của Oracle Corporation và/hoặc các chi nhánh của Oracle. Các tên khác có thể là nhãn hiệu của 
chủ sở hữu tương ứng. 
 
Nhập 'help;' hoặc '\h' để được trợ giúp. Nhập '\c' để xóa câu lệnh nhập hiện tại. 
 
mysql> show master status; 
+-------------------+----------+--------------+-----------------+-------------------+ 
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | 
+-------------------+----------+--------------+-----------------+-------------------+ 
| mysql-bin.000001 | 854 | test_rep | | | 
+-------------------+----------+--------------+-----------------+-------------------+ 
1 hàng trong tập hợp (0,00 giây)
Tuyệt, bây giờ chúng ta hãy thiết lập máy chủ DB2 làm máy chủ phụ cho máy chủ sao chép DB1 chính và trên hết là thiết lập máy chủ DB2 cũng làm máy chủ chính cho máy chủ DB1. Sau đây là các bước:
Mã:
[root@DB2 ~]# vi /etc/my.cnf 
[mysqld] 
datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock 
port=3306 
innodb_file_per_table=ON 
pid-file=/var/lib/mysql/mysqld.pid 
 
server-id = 12 
log_bin = /var/log/mysql/mysql-bin.log 
binlog_do_db = test_rep
Giống như cấu hình trong DB1, hãy vào bên trong môi trường máy chủ MySQL và tạo cơ sở dữ liệu liên quan và chỉ định người dùng cho quy trình sao chép.
Mã:
[root@DB2 ~]# mysql -u root -p 
Nhập mật khẩu: 
Chào mừng đến với màn hình giám sát MySQL. Các lệnh kết thúc bằng ; hoặc \g. 
ID kết nối MySQL của bạn là 5 
Phiên bản máy chủ: 5.6.36-log MySQL Community Server (GPL) 
 
Bản quyền (c) 2000, 2017, Oracle và/hoặc các chi nhánh của Oracle. Mọi quyền được bảo lưu. 
 
Oracle là nhãn hiệu đã đăng ký của Oracle Corporation và/hoặc các chi nhánh của Oracle. Các tên khác có thể là nhãn hiệu của 
chủ sở hữu tương ứng. 
 
Nhập 'help;' hoặc '\h' để được trợ giúp. Nhập '\c' để xóa câu lệnh nhập hiện tại. 
 
mysql> show databases; 
+------------------+ 
| Database | 
+------------------+ 
| information_schema | 
| mysql | 
| performance_schema | 
| test | 
+------------------+ 
4 hàng trong tập hợp (0,01 giây) 
 
mysql> create database test_rep; 
Query OK, 1 hàng bị ảnh hưởng (0,01 giây) 
 
mysql> create user 'replicator'@'DB1' defined by 'Rep1234'; 
Query OK, 0 hàng bị ảnh hưởng (0,01 giây) 
 
mysql> grant replication slave on *.* to 'replicator'@'DB1'; 
Query OK, 0 hàng bị ảnh hưởng (0,00 giây) 
 
mysql> show slave status; 
Empty set (0,01 giây)
Xong, bây giờ hãy khởi động lại máy chủ MySQL DB2 và xem cấu hình đã được kích hoạt hay chưa. Nếu có, thì chúng ta tiếp tục tiến hành tạo slave cho máy chủ DB1.
Mã:
[root@DB2 ~]# service mysqld restart 
Stopping mysqld: [OK] 
Starting mysqld: [OK] 
 
[root@DB2 ~]# mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor. Commands ends with ; or \g. 
Your MySQL connection id is 5 
Server version: 5.6.36-log MySQL Community Server (GPL) 
 
Copyright (c) 2000, 2017, Oracle và/hoặc các chi nhánh của Oracle. All rights reserved. 
 
Oracle là nhãn hiệu đã đăng ký của Oracle Corporation và/hoặc các 
chi nhánh của Oracle. Các tên khác có thể là nhãn hiệu của 
chủ sở hữu tương ứng. 
 
Nhập 'help;' hoặc '\h' để được trợ giúp. Nhập '\c' để xóa câu lệnh nhập hiện tại. 
 
mysql> hiển thị trạng thái master; 
+-------------------+----------+--------------+-----------------+-------------------+ 
| Tệp | Vị trí | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | 
+-------------------+----------+--------------+-----------------+-------------------+ 
| mysql-bin.000001 | 553 | test_rep | | | 
+-------------------+----------+--------------+-----------------+-------------------+ 
1 hàng trong tập hợp (0,00 giây) 
 
mysql> dừng slave; 
Truy vấn OK, 0 hàng bị ảnh hưởng, 1 cảnh báo (0,00 giây) 
 
mysql> THAY ĐỔI MASTER THÀNH MASTER_HOST = 'DB1', MASTER_PORT = 3306, MASTER_USER = 'replicator', MASTER_PASSWORD = 'Rep1234', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 854; 
Truy vấn OK, 0 hàng bị ảnh hưởng, 2 cảnh báo (0,07 giây) 
 
mysql> khởi động slave; 
Truy vấn OK, 0 hàng bị ảnh hưởng (0,04 giây) 
 
mysql> hiển thị trạng thái slave\G; 
****************************** 1. hàng *************************** 
Slave_IO_State: Đang chờ master gửi sự kiện 
Master_Host: DB1 
Master_User: replicator 
Master_Port: 3306 
Connect_Retry: 60 
Master_Log_File: mysql-bin.000001 
Read_Master_Log_Pos: 854 
Relay_Log_File: mysqld-relay-bin.000002 
Relay_Log_Pos: 284 
Relay_Master_Log_File: mysql-bin.000001 
Slave_IO_Running: Có 
Slave_SQL_Running: Có 
Replicate_Do_DB: 
Replicate_Ignore_DB: 
Replicate_Do_Table: 
Replicate_Ignore_Table: 
Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
Last_Errno: 0 
Last_Error: 
Skip_Counter: 0 
Exec_Master_Log_Pos: 854 
Relay_Log_Space: 459 
Until_Condition: Không có 
Until_Log_File: 
Until_Log_Pos: 0 
Master_SSL_Allowed: Không 
Master_SSL_CA_File: 
Master_SSL_CA_Path: 
Master_SSL_Cert: 
Master_SSL_Cipher: 
Master_SSL_Key: 
Seconds_Behind_Master: 0 
Master_SSL_Verify_Server_Cert: Không 
Last_IO_Errno: 0 
Last_IO_Error: 
Last_SQL_Errno: 0 
Last_SQL_Error: 
Replicate_Ignore_Server_Ids: 
Master_Server_Id: 11 
Master_UUID: 6e143d91-3635-11e7-b9ad-08002742c04c 
Master_Info_File: /var/lib/mysql/master.info 
SQL_Delay: 0 
SQL_Remaining_Delay: NULL 
Slave_SQL_Running_State: Slave đã đọc tất cả nhật ký chuyển tiếp; đang chờ luồng I/O phụ cập nhật 
Master_Retry_Count: 86400 
Master_Bind: 
Last_IO_Error_Timestamp: 
Last_SQL_Error_Timestamp: 
Master_SSL_Crl: 
Master_SSL_Crlpath: 
Retrieved_Gtid_Set: 
Executed_Gtid_Set: 
Auto_Position: 0 
1 hàng trong tập hợp (0,00 giây) 
 
ERROR: 
Không có truy vấn nào được chỉ định 
 
mysql> hiển thị trạng thái phụ; 
+----------------------------------+---------------+--------------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------
| Slave_IO_State | Master_Host | Master_User | Master_Port | Kết nối_Thử lại | Tệp_Nhật_Nhật_Ký_Nhật_Nhật_Ký_Nhật_Nhật_Nhật_Ký_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_Nhật_IO_Chạy_Slave_IO_Chạy_Slave_SQL_Chạy_Slave_Do_DB | Sao chép_Do_DB | Sao chép_Do_Table | Sao chép_Do_Table | Sao chép_Do_Bảng | Sao chép_Do_Bảng | Sao chép_Wild_Do_Table | Sao chép_Wild_Ignore_Table | Lỗi_Lần_Ghi_Lần | Lỗi_Lần_Ghi_Lần | Bỏ_Quét_Bộ_Đếm | Exec_Master_Log_Pos | Không gian_Nhật_Nhật_Nhật_Nhật_Chuyển_Đổi | Cho_Đến_Điều_Kiện | Cho_Đến_Đến_Cho_Đến_Cho_Đến | Cho_Được_Cho_Thừa_SSL | Tệp_Master_SSL_CA | Đường_Dẫn_SSL_CA | Chứng_nhận_SSL_Master | Mã_Mã_SSL_Master | Khóa_SSL_Master | Giây_Sau_Chủ_Chủ | Chứng_nhận_Máy_chủ_Xác_nhận_SSL_Master | Chứng_nhận_IO_Lần_Ghi_Lần_Ghi | Last_IO_Error | Last_SQL_Errno | Last_SQL_Error | Replicate_Ignore_Server_Ids | Master_Server_Id | Master_UUID | Master_Info_File | SQL_Delay | SQL_Remaining_Delay | Slave_SQL_Running_State | Master_Retry_Count | Master_Bind | Last_IO_Error_Timestamp | Last_SQL_Error_Timestamp | Master_SSL_Crl | Master_SSL_Crlpath | Retrieved_Gtid_Set | Executed_Gtid_Set | Auto_Position | 
+----------------------------------+--------------+--------------+-------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+--------------------- 
| Đang chờ master gửi sự kiện | DB1 | replicator | 3306 | 60 | mysql-bin.000001 | 854 | mysqld-relay-bin.000002 | 284 | mysql-bin.000001 | Có | Có | | | | | | | 0 | | 0 | 854 | 459 | Không có | | 0 | Không | | | | | | 0 | Không | 0 | | 0 | | 11 | 6e143d91-3635-11e7-b9ad-08002742c04c | /var/lib/mysql/master.info | 0 | NULL | Slave đã đọc toàn bộ nhật ký chuyển tiếp; đang chờ luồng I/O của slave cập nhật | 86400 | | | | | | | | 0 | 
+----------------------------------+---------------+--------------------------+---------------+-------------------+---------------------+---------------------+------------------------+------------------------+------------------------+------------------------ 
1 hàng trong bộ (0,00 giây)
Tuyệt! Vì mọi thứ đã được thiết lập cho máy chủ DB2, hãy quay lại máy chủ DB1 và tạo cấu hình phụ cho máy chủ DB2.
Mã:
[root@DB1 ~]# mysql -u root -p 
Nhập mật khẩu: 
Cảnh báo: Sử dụng mật khẩu trên giao diện dòng lệnh có thể không an toàn. 
Chào mừng đến với màn hình MySQL. Các lệnh kết thúc bằng ; hoặc \g. 
ID kết nối MySQL của bạn là 11 
Phiên bản máy chủ: 5.6.36-log MySQL Community Server (GPL) 
 
Bản quyền (c) 2000, 2017, Oracle và/hoặc các chi nhánh của Oracle. Mọi quyền được bảo lưu. 
 
Oracle là nhãn hiệu đã đăng ký của Oracle Corporation và/hoặc các 
chi nhánh của Oracle. Các tên khác có thể là nhãn hiệu của 
chủ sở hữu tương ứng. 
 
Nhập 'help;' hoặc '\h' để được trợ giúp. Nhập '\c' để xóa câu lệnh nhập hiện tại. 
 
mysql> show master status; 
+-------------------+----------+--------------+-----------------+-------------------+ 
| Tệp | Vị trí | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | 
+-------------------+----------+--------------+-------------------+-------------------+ 
| mysql-bin.000001 | 854 | test_rep | | | 
+-------------------+----------+--------------+-----------------+-------------------+ 
1 hàng trong tập hợp (0,01 giây) 
 
mysql> dừng nô lệ; 
Truy vấn OK, 0 hàng bị ảnh hưởng, 1 cảnh báo (0,00 giây) 
 
mysql> THAY ĐỔI MASTER THÀNH MASTER_HOST = 'DB2', MASTER_PORT = 3306, MASTER_USER = 'replicator', MASTER_PASSWORD = 'Rep1234', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 553; 
Truy vấn OK, 0 hàng bị ảnh hưởng, 2 cảnh báo (0,25 giây) 
 
mysql> khởi động slave; 
Truy vấn OK, 0 hàng bị ảnh hưởng (0,03 giây) 
 
mysql> hiển thị trạng thái slave; 
+----------------------------------+---------------+--------------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------
| Slave_IO_State | Master_Host | Master_User | Master_Port | Connect_Retry | Master_Log_File | Read_Master_Log_Pos | Relay_Log_File | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master | Master_SSL_Verify_Server_Cert | Last_IO_Errno | Last_IO_Error | Last_SQL_Errno | Last_SQL_Error | Replicate_Ignore_Server_Ids | Master_Server_Id | Master_UUID | Master_Info_File | SQL_Delay | SQL_Remaining_Delay | Slave_SQL_Running_State | Master_Retry_Count | Master_Bind | Last_IO_Error_Timestamp | Last_SQL_Error_Timestamp | Master_SSL_Crl | Master_SSL_Crlpath | Retrieved_Gtid_Set | Executed_Gtid_Set | Auto_Position | 
+----------------------------------+--------------+--------------+-------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+--------------------- 
| Đang chờ master gửi sự kiện | DB2 | replicator | 3306 | 60 | mysql-bin.000001 | 553 | mysqld-relay-bin.000002 | 284 | mysql-bin.000001 | Có | Có | | | | | | | 0 | | 0 | 553 | 459 | Không có | | 0 | Không | | | | | | 0 | Không | 0 | | 0 | | 12 | 14f5ab41-3c7b-11e7-a293-08002742c04c | /var/lib/mysql/master.info | 0 | NULL | Slave đã đọc toàn bộ nhật ký chuyển tiếp; đang chờ luồng I/O của slave cập nhật | 86400 | | | | | | | | 0 | 
+--------------------------------------------------+---------------+--------------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+--------------------- 
1 hàng trong tập hợp (0,01 giây) 
 
mysql> hiển thị trạng thái slave\G; 
****************************** 1. hàng *************************** 
Slave_IO_State: Đang chờ master gửi sự kiện 
Master_Host: DB2 
Master_User: replicator 
Master_Port: 3306 
Connect_Retry: 60 
Master_Log_File: mysql-bin.000001 
Read_Master_Log_Pos: 553 
Relay_Log_File: mysqld-relay-bin.000002 
Relay_Log_Pos: 284 
Relay_Master_Log_File: mysql-bin.000001 
Slave_IO_Running: Có 
Slave_SQL_Running: Có 
Replicate_Do_DB: 
Replicate_Ignore_DB: 
Replicate_Do_Table: 
Replicate_Ignore_Table: 
Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
Last_Errno: 0 
Last_Error: 
Skip_Counter: 0 
Exec_Master_Log_Pos: 553 
Relay_Log_Space: 459 
Until_Condition: Không có 
Until_Log_File: 
Until_Log_Pos: 0 
Master_SSL_Allowed: Không 
Master_SSL_CA_File: 
Master_SSL_CA_Path: 
Master_SSL_Cert: 
Master_SSL_Cipher: 
Master_SSL_Key: 
Seconds_Behind_Master: 0 
Master_SSL_Verify_Server_Cert: Không 
Last_IO_Errno: 0 
Last_IO_Error: 
Last_SQL_Errno: 0 
Last_SQL_Error: 
Replicate_Ignore_Server_Ids: 
Master_Server_Id: 12 
Master_UUID: 14f5ab41-3c7b-11e7-a293-08002742c04c 
Master_Info_File: /var/lib/mysql/master.info 
SQL_Delay: 0 
SQL_Remaining_Delay: NULL 
Slave_SQL_Running_State: Slave đã đọc tất cả nhật ký chuyển tiếp; đang chờ luồng I/O phụ cập nhật 
Master_Retry_Count: 86400 
Master_Bind: 
Last_IO_Error_Timestamp: 
Last_SQL_Error_Timestamp: 
Master_SSL_Crl: 
Master_SSL_Crlpath: 
Retrieved_Gtid_Set: 
Executed_Gtid_Set: 
Auto_Position: 0 
1 hàng trong tập hợp (0,00 giây) 
 
ERROR: 
Không có truy vấn nào được chỉ định
Hoàn thành tốt lắm, giờ mọi thứ đã sẵn sàng, chúng ta hãy tiến hành giai đoạn thử nghiệm để kết luận rằng mọi cấu hình đã được thực hiện chính xác.

4. Giai đoạn thử nghiệm​

Trước khi bắt đầu thử nghiệm, chúng ta hãy đưa ra các giả định cho kỳ vọng về kết quả cuối cùng. Đối với thử nghiệm này, chúng ta sẽ tạo một bảng trên máy chủ MySQL DB1, sau đó trên DB2, chúng ta sẽ kiểm tra xem bảng có tự động tồn tại hay không. Nếu có, chúng ta sẽ thêm một hàng dữ liệu mới vào đó và kiểm tra lại trên máy chủ DB1 xem dữ liệu mới có sẵn trên cả hai máy chủ hay không.
Mã:
[root@DB1 ~]# mysql -u root -p test_rep 
Nhập mật khẩu: 
Cảnh báo: Sử dụng mật khẩu trên giao diện dòng lệnh có thể không an toàn. 
Chào mừng đến với màn hình MySQL. Các lệnh kết thúc bằng ; hoặc \g. 
ID kết nối MySQL của bạn là 16 
Phiên bản máy chủ: 5.6.36-log MySQL Community Server (GPL) 
 
Bản quyền (c) 2000, 2017, Oracle và/hoặc các chi nhánh của Oracle. Mọi quyền được bảo lưu. 
 
Oracle là nhãn hiệu đã đăng ký của Oracle Corporation và/hoặc các chi nhánh của Oracle. Các tên khác có thể là nhãn hiệu của 
chủ sở hữu tương ứng. 
 
Nhập 'help;' hoặc '\h' để được trợ giúp. Nhập '\c' để xóa câu lệnh nhập hiện tại. 
 
mysql> select database(); 
+------------+ 
| database() | 
+------------+ 
| test_rep | 
+------------+ 
1 hàng trong tập hợp (0,00 giây) 
 
mysql> create table tbl1( id int(11) primary key auto_increment, fullname varchar(30)); 
Query OK, 0 hàng bị ảnh hưởng (0,22 giây) 
 
mysql> show tables in test_rep; 
+------------------+ 
| Tables_in_test_rep | 
+------------------+ 
| tbl1 | 
+------------------+ 
1 hàng trong tập hợp (0,01 giây)
Xong, vì việc tạo bảng là câu lệnh DDL (Ngôn ngữ định nghĩa dữ liệu), không cần phải nhập lệnh commit. Bây giờ hãy vào bên trong máy chủ DB2 MySQL và xem bảng mới tạo có tồn tại không.
Mã:
[root@DB2 ~]# mysql -u root -p test_rep 
Nhập mật khẩu: 
Đang đọc thông tin bảng để hoàn thành tên bảng và tên cột 
Bạn có thể tắt tính năng này để khởi động nhanh hơn bằng -A 
 
Chào mừng đến với màn hình MySQL. Các lệnh kết thúc bằng ; hoặc \g. 
ID kết nối MySQL của bạn là 8 
Phiên bản máy chủ: 5.6.36-log MySQL Community Server (GPL) 
 
Bản quyền (c) 2000, 2017, Oracle và/hoặc các chi nhánh của Oracle. Mọi quyền được bảo lưu. 
 
Oracle là nhãn hiệu đã đăng ký của Oracle Corporation và/hoặc các 
chi nhánh của Oracle. Các tên khác có thể là nhãn hiệu của 
chủ sở hữu tương ứng. 
 
Nhập 'help;' hoặc '\h' để được trợ giúp. Gõ '\c' để xóa câu lệnh nhập hiện tại. 
 
mysql> show tables in test_rep; 
+------------------+ 
| Tables_in_test_rep | 
+------------------+ 
| tbl1 | 
+------------------+ 
1 hàng trong tập hợp (0,00 giây) 
 
mysql> insert into tbl1 (fullname) values ('Shahril'), ('mark'), ('Allen'), ('Suzy'), ('Adam') ; 
Query OK, 5 hàng bị ảnh hưởng (0,05 giây) 
Records: 5 Duplicates: 0 Warnings: 0 
 
mysql> select * from tbl1; 
+-----+--------+ 
| id | fullname | 
+-----+--------+ 
| 1 | Shahril | 
| 2 | mark | 
| 3 | Allen | 
| 4 | Suzy | 
| 5 | Adam | 
+----+----------+ 
5 hàng trong tập hợp (0,00 giây) 
 
mysql> commit; 
Query OK, 0 hàng bị ảnh hưởng (0,00 giây)
Tuyệt, lưu ý rằng bảng mới tạo trong máy chủ DB1 hiện tự động tồn tại trong máy chủ MySQL DB2. Sau đó, chúng tôi cũng đã chèn được 5 hàng dữ liệu vào bảng. Đối với lần kiểm tra cuối cùng, hãy xem các hàng đã cập nhật trong bảng TBL1 có thể được nhìn thấy trong máy chủ DB1 hay không.
Mã:
[root@DB1 ~]# mysql -u root -p test_rep 
Nhập mật khẩu: 
Đang đọc thông tin bảng để hoàn thành tên bảng và tên cột 
Bạn có thể tắt tính năng này để khởi động nhanh hơn bằng cách sử dụng -A 
 
Chào mừng đến với màn hình MySQL. Các lệnh kết thúc bằng ; hoặc \g. 
ID kết nối MySQL của bạn là 8 
Phiên bản máy chủ: 5.6.36-log MySQL Community Server (GPL) 
 
Bản quyền (c) 2000, 2017, Oracle và/hoặc các chi nhánh của Oracle. Mọi quyền được bảo lưu. 
 
Oracle là nhãn hiệu đã đăng ký của Oracle Corporation và/hoặc các chi nhánh của Oracle. Các tên khác có thể là nhãn hiệu của 
chủ sở hữu tương ứng. 
 
Gõ 'help;' hoặc '\h' để được trợ giúp. Nhập '\c' để xóa câu lệnh nhập hiện tại. 
 
mysql> select * from tbl1; 
+-----+----------+ 
| id | fullname | 
+-----+----------+ 
| 1 | Shahril | 
| 2 | mark | 
| 3 | Allen | 
| 4 | Suzy | 
| 5 | Adam | 
+-----+----------+ 
5 hàng trong tập hợp (0,01 giây) 
 
mysql> delete from tbl1 where fullname like 'A%'; 
Query OK, 2 hàng bị ảnh hưởng (0,07 giây) 
 
mysql> select * from tbl1; 
+-----+----------+ 
| id | fullname | 
+----+----------+ 
| 1 | Shahril | 
| 2 | mark | 
| 4 | Suzy | 
+----+----------+ 
3 hàng trong tập hợp (0,00 giây)
Thích quá! Chúng tôi đã tạo thành công bản sao đa chủ MySQL giữa 2 máy chủ.
 
Back
Bên trên