MariaDB 10.5 được phát hành dưới dạng GA vào tháng 6 năm 2020. Trong bản phát hành, đã có thêm hỗ trợ cho Amazon S3 hoặc bất kỳ đám mây công cộng hoặc riêng tư nào của bên thứ ba hỗ trợ API S3. Nó cũng có tính năng xử lý tinh vi đối với các đặc quyền mở rộng mức độ chi tiết của nó, cho phép một DBA chẳng hạn cung cấp các đặc quyền hạn chế trên một người dùng cơ sở dữ liệu cụ thể để bảo mật chặt chẽ cơ sở dữ liệu của bạn.
MariaDB 10.5 cũng tự hào về những cải tiến của nó với công cụ lưu trữ InnoDB về hiệu suất của nó và một số biến mới cũng được trình bày nhưng các biến không dùng nữa chính đã được đánh dấu là không dùng nữa hoặc bị loại bỏ hoàn toàn. Ví dụ:hãy lưu ý rằng trong MariaDB 10.5, innodb_buffer_pool_instances đã được đánh dấu là không dùng nữa trong khi nó được thiết lập để loại bỏ trong phiên bản 10.6. Nếu bạn tò mò về lý do họ nói, hãy xem MDEV-15058.
Với tất cả những thay đổi này, tốt nhất bạn nên cung cấp blog này để cung cấp hướng dẫn về cách nâng cấp MariaDB 10.4 lên MariaDB 10.5. Chúng tôi sẽ thực hiện từng bước những điều bạn cần xem xét để nâng cấp.
Những điều bạn cần trước khi nâng cấp
Không phải lúc nào cũng là phương pháp tốt nhất để nâng cấp cơ sở dữ liệu của bạn đang hoạt động trong quá trình sản xuất mà không cần thực hiện kiểm tra. Biệt ngữ đơn giản này định nghĩa thuật ngữ mà chúng tôi gọi là SNAFU. Bạn có thể nhấn Google để tìm thuật ngữ nhưng về cơ bản, tốt nhất là không nên chạm vào tình trạng bình thường, đặc biệt là các hệ thống hoạt động bình thường. Tuy nhiên, không phải lúc nào hệ thống của bạn cũng phải ổn định, nó phải được nâng cấp lên các bản vá bảo mật sẵn có, sửa lỗi và các tính năng nâng cao có trên các phiên bản mới hơn. Vì vậy, trong trường hợp này, bạn luôn có kế hoạch và thiết lập cơ chế dự phòng trước khi nâng cấp. Trong trường hợp nâng cấp hệ thống gặp phải các vấn đề không được quan sát, thì việc nâng cấp có thể mang lại tác động cho doanh nghiệp của bạn.
Luôn tạo bản sao lưu cơ sở dữ liệu của bạn
Trong trường hợp này, hãy luôn cung cấp bản sao lưu cho dữ liệu của bạn. Bạn có thể sử dụng các công cụ như mariabackup hoặc mydumper hoặc, nếu bạn là người dùng ClusterControl, thì hãy sử dụng công cụ Quản lý sao lưu cơ sở dữ liệu. Nếu bạn chưa chuẩn bị cho loại sao lưu nào bạn cần, bạn có thể phải kiểm tra các phương pháp hay nhất khi sao lưu.
Kiểm tra ... Kiểm tra ... và Kiểm tra lại
Trong khi sao lưu cung cấp dữ liệu để cấp dữ liệu trong trường hợp bạn cần khôi phục về trạng thái chính của nó nếu xảy ra sự cố không lường trước, thì việc nâng cấp lên bản phát hành chính phải được thử nghiệm trước trong một máy phát triển hoặc dàn dựng. Đối với các công ty doanh nghiệp lớn, thông lệ là luôn thực hiện kiểm tra hồi quy trên môi trường QA được nhắm mục tiêu hoặc môi trường tổ chức nơi việc nâng cấp máy chủ cơ sở dữ liệu lên phiên bản chính của nó trước tiên phải được áp dụng. Tất cả các hệ thống từ ứng dụng và cơ sở dữ liệu phải tiến hành kiểm tra hồi quy hoặc một loạt kiểm tra QA cho đến khi mọi thứ trôi qua. Không phải là một ý kiến hay nếu đơn giản hóa một trường hợp thử nghiệm của ứng dụng của bạn vào hệ thống cơ sở dữ liệu và chỉ cần loại trừ rằng mọi thứ đều ổn miễn là cơ sở dữ liệu không bị lỗi hoặc nó chỉ được chứng minh trong một khoảng thời gian ngắn khi thử nghiệm. ngắn gọn, một bài kiểm tra rất đơn giản chỉ bao gồm một tỷ lệ phần trăm nhỏ của hệ thống tổng thể của bạn. Việc kiểm tra nâng cấp của bạn trước tiên trên môi trường dàn hoặc môi trường QA phải được ưu tiên sao cho nó phải đạt được trạng thái hoàn toàn tốt cho ứng dụng của bạn mà không ảnh hưởng đến phía doanh nghiệp và cả những người dùng sẽ sử dụng ứng dụng của bạn, hơn là nhận ra muộn rằng việc nâng cấp cơ sở dữ liệu khiến hệ thống của bạn hoạt động bất thường do những thay đổi mà bạn chưa phát hiện ra.
Chuẩn bị Quy trình Khôi phục
Mọi thứ phải được lên kế hoạch trong quá trình nâng cấp cơ sở dữ liệu của bạn. Bất cứ khi nào có sẵn bản sao lưu và thử nghiệm cho thấy kết quả mạnh mẽ và đầy hứa hẹn, nó luôn cảm thấy an toàn và có thể dự đoán được trong trường hợp các thử thách không mong muốn xảy ra trong khi nâng cấp máy chủ cơ sở dữ liệu MariaDB sản xuất của bạn. Trong trường hợp này, hãy luôn viết và chuẩn bị một thủ tục để mọi thứ trở lại bình thường một cách suôn sẻ và liền mạch.
Nếu thời gian bảo trì của bạn không quá dài, việc chuẩn bị quy trình khôi phục bằng các công cụ tự động như Ansible, Chef, Puppet, SaltStack hoặc Terraform có thể là một lựa chọn tốt cho quy trình khôi phục. Nó giảm thiểu sai sót của con người và cung cấp tốc độ và sự nhanh nhẹn để thực hiện các nhiệm vụ quan trọng. Mặc dù nó có thể làm hỏng trong trường hợp có thể gặp phải một lỗi duy nhất nếu tập lệnh tự động hóa bị lỗi, nhưng điều đó cũng có nghĩa là bạn không thể bỏ qua khả năng điều này có thể xảy ra. Do đó, điều này cũng chỉ ra rằng việc khôi phục phải liền mạch và đã được kiểm tra đúng cách thì nó mới có thể khôi phục thành một quy trình hợp lệ.
Quy trình Nâng cấp MariaDB
Nâng cấp MariaDB phiên bản 10.4 lên 10.5 không phải là một vấn đề phức tạp nhưng cũng không đơn giản chút nào. Dưới đây là các bước bạn có thể làm để nâng cấp lên phiên bản MariaDB 10.5 mới nhất.
Chuẩn bị Kho lưu trữ của bạn
Có thể hiểu rằng bạn có MariaDB 10.4, vì vậy có thể giả định rằng có một kho lưu trữ hiện tại trong các nút máy chủ MariaDB hiện tại của bạn. Nếu không, bạn có thể thêm một kho lưu trữ và điều đó thật đơn giản.
Ubuntu / Debian
Đối với hệ thống dựa trên Ubuntu / Debian, đối với kho lưu trữ mariadb hiện có, bạn có thể chỉnh sửa kho lưu trữ. Bạn có thể xác minh xem các kho lưu trữ hiện có có trong máy chủ của bạn hay không hoặc tìm xem liệu có một kho lưu trữ MariaDB hiện có ở đâu đó hay không. Để làm điều đó, chỉ cần,
$ grep ^[^#] /etc/apt/sources.list /etc/apt/sources.list.d/*
Thông thường, bạn có một kho lưu trữ mariadb.list. Trong thiết lập của tôi trong Ubuntu 18.0 (Bionic), điều này hiển thị như sau:
[email protected]:/vagrant# cat /etc/apt/sources.list.d/mariadb.list
deb [arch=amd64] http://ftp.osuosl.org/pub/mariadb/repo/10.4/ubuntu bionic main
Chỉ cần chạy dòng lệnh sau để thêm kho lưu trữ MariaDB 10.5,
. /etc/os-release
sudo echo "deb [arch=amd64] http://ftp.osuosl.org/pub/mariadb/repo/10.5/${ID} ${VERSION_CODENAME} main" >> /etc/apt/sources.list.d/mariadb.list
Trước khi các gói MariaDB có thể được cài đặt, nó yêu cầu các gói được cài đặt phải được nhập bằng khóa công khai GPG được sử dụng để xác minh chữ ký số của các gói trong kho lưu trữ của chúng. Bạn có thể kiểm tra các khóa apt của mình bằng những điều sau đây,
$ apt-key list |grep -C2 -i 'mariadb'
Nếu khóa không được nhập,
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
hoặc cho các phiên bản dựa trên Ubuntu / Debian mới hơn, tức là bắt đầu với Debian 9 (Stretch), Debian Unstable (Sid) và Ubuntu 16.04 LTS (Xenial),
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Sau khi hoàn tất, chỉ cần chạy
$ sudo apt update
CentOS / RHEL
Đối với CentOS / RHEL, nếu bạn có một kho lưu trữ hiện có, bạn chỉ cần thêm hoặc chỉnh sửa tệp. Nếu không, việc thêm các dòng bên dưới cho kho lưu trữ MariaDB 10.5 sẽ đáp ứng đủ các yêu cầu về kho lưu trữ (xem mariadb.repo). Ví dụ:tôi có mariadb.repo sau trong máy chủ CentOS 8.0 của mình.
[[email protected] ~]# cat /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB Repository
baseurl = http://yum.mariadb.org/10.4/centos8-amd64
enabled = 1
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1
[mariadb_10.5]
name = MariaDB Repository For 10.5
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
enabled = 1
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1
Bạn có thể xác minh rằng nếu kho lưu trữ MariaDB được bật và hoạt động tốt:
[[email protected] ~]# dnf --disablerepo=* --enablerepo=mariadb_10.5 repolist
repo id repo name status
mariadb_10.5 MariaDB Repository For 10.5 83
Nâng cấp Gói MariaDB của bạn
Nâng cấp với MariaDB rất đơn giản. Trước tiên, hãy đảm bảo rằng bạn đã tắt máy chủ MariaDB đúng cách.
Đối với máy chủ sản xuất đang hoạt động và bận rộn, hãy đảm bảo rằng bạn không có kết nối nào đến và các trang bẩn được chuyển đúng cách vào đĩa. Trước khi tắt máy chủ, bạn có thể thiết lập chế độ xả các trang bẩn bằng công cụ lưu trữ Innodb của mình để tất cả các trang bẩn đều được xả sạch và làm cho quá trình tắt nhanh hơn,
set global innodb_max_dirty_pages_pct = 0;
Sau đó, theo dõi các trang bẩn bằng những thứ sau,
$ mysqladmin ext -i10 | grep dirty
| Innodb_buffer_pool_pages_dirty | 0 |
| Innodb_buffer_pool_bytes_dirty | 0 |
Sau khi tốt, hãy tắt phiên bản MariaDB,
systemctl stop mariadb
Đối với cụm cơ sở dữ liệu chính / bản sao, bạn nên luôn bắt đầu nâng cấp trên (các) bản sao. Vì vậy, trước khi nâng cấp và sau khi tắt máy, hãy đảm bảo rằng bạn đã thêm phần sau vào tệp cấu hình my.cnf của mình,
[mysqld]
….
skip-slave-start
Điều này cho phép bạn tránh tự động bắt đầu các luồng nhân bản khi máy chủ MariaDB được khởi động. Điều này mang lại cho bạn sự an toàn hơn và tránh những sai lầm tiếp theo trong quá trình sao chép. Chỉ bắt đầu các chuỗi sao chép theo cách thủ công khi đã sẵn sàng với câu lệnh sau,
START SLAVE;
Ubuntu / Debian
Nâng cấp với hệ thống dựa trên Ubuntu / Debian khá đơn giản,
sudo apt install --only-upgrade mariadb-server mariadb-client mariadb-backup mariadb-common
Tất nhiên, không cung cấp tùy chọn -y, vì vậy bạn có thể xem lại các gói sau để được cập nhật.
Centos / RHEL
Tương tự như với các hệ thống dựa trên Ubuntu / Debian, CentOS / RHEL cũng không gặp khó khăn gì khi nâng cấp phiên bản MariaDB 10.4 hiện tại của bạn. Bạn có thể chạy lệnh sau dưới đây để đủ quy trình,
$ dnf --disablerepo=* --enablerepo=mariadb_10.5 upgrade Mariadb-server MariaDB-client MariaDB-backup MariaDB-common Mariadb-shared
Đăng Cài đặt / Nâng cấp Gói
Sau khi các gói đã được nâng cấp. Vì đây là một bản nâng cấp lớn, đừng quên tải lại daemon cho systemd. Chỉ cần chạy,
$ systemctl daemon-reload
Bây giờ bạn đã hoàn tất, hãy bắt đầu dịch vụ mariadb
$ systemctl start mariadb
và chạy mysqld_upgrade,
$ mysql_upgrade
Trong khi chạy mysql_upgrade, hãy luôn theo dõi nhật ký lỗi để bạn có thể phát hiện bất kỳ lỗi nào trước khi chạy và bắt đầu mọi thứ cho các hoạt động bình thường của mình:
tail -5f /var/log/mariadb/mariadb.log
Mẹo Nâng cấp dành cho Người dùng ClusterControl
Vì ClusterControl không cung cấp nâng cấp các phiên bản chính, nên khi thực hiện nâng cấp gói, đừng quên tắt các chế độ tự động khôi phục cho cụm MariaDB của bạn. Đặt các nút ở chế độ bảo trì để cảnh báo im lặng và không có cảnh báo sai nào được thông báo.