MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Đo điểm chuẩn Triển khai cơ sở dữ liệu thủ công so với Triển khai tự động

Có nhiều cách triển khai cơ sở dữ liệu. Bạn có thể cài đặt nó bằng tay, bạn có thể dựa vào các công cụ điều phối cơ sở hạ tầng có sẵn rộng rãi như Ansible, Chef, Puppet hoặc Salt. Những công cụ đó rất phổ biến và khá dễ dàng để tìm script, công thức nấu ăn, playbook, bạn đặt tên cho nó, điều này sẽ giúp bạn tự động hóa việc cài đặt một cụm cơ sở dữ liệu. Ngoài ra còn có các nền tảng tự động hóa cơ sở dữ liệu chuyên biệt hơn, như ClusterControl, cũng có thể được sử dụng để triển khai tự động. Cách tốt nhất để triển khai cụm của bạn là gì? Bạn thực sự sẽ cần bao nhiêu thời gian để triển khai nó?

Đầu tiên, chúng ta hãy làm rõ những gì chúng ta muốn làm. Giả sử chúng ta sẽ triển khai Percona XtraDB Cluster 5.7. Nó sẽ bao gồm ba nút và chúng tôi sẽ sử dụng ba máy ảo Vagrant chạy Ubuntu 16.04 (ảnh bento / ubuntu-16.04). Chúng tôi sẽ cố gắng triển khai một cụm theo cách thủ công, sau đó sử dụng Ansible và ClusterControl. Hãy xem kết quả sẽ như thế nào.

Triển khai thủ công

Thiết lập kho lưu trữ - 1 phút 45 giây.

Trước hết, chúng ta phải cấu hình kho lưu trữ Percona trên tất cả các nút Ubuntu. Tìm kiếm nhanh trên google, ssh vào máy ảo và chạy các lệnh bắt buộc mất 1 phút 45 giây

Chúng tôi tìm thấy trang sau có hướng dẫn:
https://www.percona.com/doc/percona-repo-config/percona-release.html

và chúng tôi đã thực hiện các bước được mô tả trong phần “PHÂN PHỐI GNU / LINUX DỰA TRÊN GỢI Ý”. Chúng tôi cũng đã chạy bản cập nhật apt để làm mới bộ nhớ cache của apt.

Cài đặt PXC Nodes - 2 phút 45 giây

Bước này về cơ bản bao gồm thực hiện:

[email protected]:~# apt install percona-xtradb-cluster-5.7

Phần còn lại chủ yếu phụ thuộc vào tốc độ kết nối internet của bạn khi các gói đang được tải xuống. Đầu vào của bạn cũng sẽ cần thiết (bạn sẽ chuyển mật khẩu cho superuser) để nó không phải là cài đặt không cần giám sát. Khi mọi thứ hoàn tất, bạn sẽ có ba nút Percona XtraDB Cluster đang chạy:

root     15488  0.0  0.2   4504  1788 ?        S    10:12   0:00 /bin/sh /usr/bin/mysqld_safe
mysql    15847  0.3 28.3 1339576 215084 ?      Sl   10:12   0:00  \_ /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --wsrep-provider=/usr/lib/galera3/libgalera_smm.so --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --wsrep_start_position=00000000-0000-0000-0000-000000000000:-1

Định cấu hình các nút PXC - 3 phút 25 giây

Ở đây bắt đầu phần phức tạp. Thực sự rất khó để định lượng kinh nghiệm và bao nhiêu thời gian để thực sự hiểu những gì cần thiết phải làm. Điều tốt là gì, tìm kiếm trên google “cách cài đặt percona xtrabdb cluster” trỏ đến tài liệu của Percona, trong đó mô tả quy trình sẽ như thế nào. Vẫn có thể mất nhiều thời gian hơn hoặc ít hơn, tùy thuộc vào mức độ quen thuộc của bạn với PXC và Galera nói chung. Trường hợp xấu nhất, bạn sẽ không nhận thức được bất kỳ hành động bắt buộc bổ sung nào và bạn sẽ kết nối với PXC của mình và bắt đầu làm việc với nó, không nhận ra rằng trên thực tế, bạn có ba nút, mỗi nút tạo thành một cụm riêng của nó.

Giả sử chúng tôi làm theo khuyến nghị từ Percona và chỉ cần thực hiện các bước đó. Nói tóm lại, chúng tôi đã sửa đổi các tệp cấu hình theo hướng dẫn trên trang web Percona, chúng tôi cũng cố gắng khởi động nút đầu tiên:

[email protected]:~# /etc/init.d/mysql bootstrap-pxc
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 10!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 10!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 10!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 10!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
 * Bootstrapping Percona XtraDB Cluster database server mysqld                                                                                                                                                                                                                     ^C

Điều này có vẻ không chính xác. Thật không may, hướng dẫn không rõ ràng. Một lần nữa, nếu bạn không biết chuyện gì đang xảy ra, bạn sẽ dành nhiều thời gian hơn để cố gắng hiểu chuyện gì đã xảy ra. May mắn thay, stackoverflow.com rất hữu ích (mặc dù không phải là phản hồi đầu tiên trong danh sách mà chúng tôi nhận được) và bạn sẽ nhận ra rằng mình bỏ lỡ tiêu đề phần [mysqld] trong tệp /etc/mysql/my.cnf của mình. Thêm điều này trên tất cả các nút và lặp lại quá trình bootstrap đã giải quyết được vấn đề. Tổng cộng chúng tôi đã dành 3 phút 25 giây (không bao gồm googling để tìm lỗi vì chúng tôi nhận thấy ngay vấn đề là gì).

Định cấu hình cho SST, đưa các nút khác vào cụm - Bắt đầu từ 8 phút đến vô cực

Các hướng dẫn trên trang web Percona khá rõ ràng. Khi bạn đã thiết lập và chạy một nút, chỉ cần bắt đầu các nút còn lại và bạn sẽ ổn. Chúng tôi đã thử điều đó và chúng tôi không thể thấy thêm các nút tham gia cụm. Đây là nơi hầu như không thể biết được sẽ mất bao lâu để chẩn đoán vấn đề. Chúng tôi mất 6-7 phút nhưng để có thể thực hiện nhanh chóng, bạn phải:

  1. Làm quen với cách cấu hình PXC được cấu trúc:
    [email protected]:~# tree  /etc/mysql/
    /etc/mysql/
    ├── conf.d
    │   ├── mysql.cnf
    │   └── mysqldump.cnf
    ├── my.cnf -> /etc/alternatives/my.cnf
    ├── my.cnf.fallback
    ├── my.cnf.old
    ├── percona-xtradb-cluster.cnf
    └── percona-xtradb-cluster.conf.d
        ├── client.cnf
        ├── mysqld.cnf
        ├── mysqld_safe.cnf
        └── wsrep.cnf
  2. Biết cách các lệnh! include và! includeir hoạt động trong các tệp cấu hình MySQL
  3. Biết cách MySQL xử lý các biến giống nhau được bao gồm trong nhiều tệp
  4. Biết những gì cần tìm và lưu ý về các cấu hình có thể dẫn đến việc tự khởi động nút để tự tạo thành một cụm

Sự cố liên quan đến thực tế là các hướng dẫn không đề cập đến bất kỳ tệp nào ngoại trừ /etc/mysql/my.cnf, trong thực tế, chúng tôi nên sửa đổi /etc/mysql/percona-xtradb-cluster.conf.d/wsrep .cnf. Tệp đó chứa biến trống:

wsrep_cluster_address=gcomm://

và cấu hình như vậy buộc nút khởi động vì nó không có thông tin về các nút khác để tham gia. Chúng tôi đặt biến đó trong /etc/mysql/my.cnf nhưng sau đó tệp wsrep.cnf đã được đưa vào, ghi đè thiết lập của chúng tôi.

Vấn đề này có thể là một trình chặn nghiêm trọng đối với những người không thực sự quen thuộc với cách MySQL và Galera hoạt động, dẫn đến việc gỡ lỗi thậm chí mất hàng giờ đồng hồ.

Tổng thời gian cài đặt - 16 phút (Nếu bạn là DBA MySQL như tôi)

Chúng tôi đã cài đặt Percona XtraDB Cluster trong 16 phút. Bạn phải ghi nhớ một số điều - chúng tôi đã không điều chỉnh cấu hình. Đây là một cái gì đó sẽ đòi hỏi nhiều thời gian và kiến ​​thức hơn. Nút PXC đi kèm với một số cấu hình đơn giản, chủ yếu liên quan đến ghi nhật ký nhị phân và sao chép tập viết Galera. Không có điều chỉnh InnoDB. Nếu bạn không quen với nội bộ MySQL, đây là hàng giờ nếu không phải là ngày đọc và làm quen với các cơ chế bên trong. Một điều quan trọng khác là đây là một quá trình bạn sẽ phải áp dụng lại cho mọi cụm mà bạn triển khai. Cuối cùng, chúng tôi đã cố gắng xác định vấn đề và giải quyết nó rất nhanh do kinh nghiệm của chúng tôi với Percona XtraDB Cluster và MySQL nói chung. Người dùng bình thường rất có thể sẽ dành nhiều thời gian hơn đáng kể để cố gắng hiểu điều gì đang xảy ra và tại sao.

Ansible Playbook

Bây giờ, chuyển sang tự động hóa với Ansible. Chúng ta hãy cố gắng tìm và sử dụng một cuốn sách phát có thể đọc được, chúng ta có thể sử dụng lại cho tất cả các lần triển khai tiếp theo. Hãy xem sẽ mất bao lâu để làm điều đó.

Định cấu hình kết nối SSH - 1 phút

Ansible yêu cầu kết nối SSH trên tất cả các nút để kết nối và cấu hình chúng. Chúng tôi đã tạo khóa SSH và phân phối thủ công trên các nút.

Tìm Playbook Ansible - 2 phút 15 giây

Vấn đề chính ở đây là có quá nhiều sách vở sẵn có đến mức không thể quyết định được đâu là sách tốt nhất. Do đó, chúng tôi quyết định xem xét 3 kết quả hàng đầu của Google và thử chọn một kết quả. Chúng tôi đã quyết định chọn https://github.com/cdelgehier/ansible-role-XtraDB-Cluster vì nó có vẻ dễ định cấu hình hơn những cái còn lại.

Sao chép Kho lưu trữ và Cài đặt Ansible - 30 giây

Việc này rất nhanh, tất cả những gì chúng tôi cần là

apt install ansible git
git clone https://github.com/cdelgehier/ansible-role-XtraDB-Cluster.git

Chuẩn bị Tệp Kiểm kê - 1 phút 10 giây

Bước này cũng rất đơn giản, chúng tôi đã tạo một tệp kiểm kê bằng cách sử dụng ví dụ từ tài liệu. Chúng tôi chỉ thay thế địa chỉ IP của các nút bằng những gì chúng tôi đã định cấu hình trong môi trường của mình.

Chuẩn bị Playbook - 1 phút 45 giây

Chúng tôi quyết định sử dụng ví dụ mở rộng nhất từ ​​tài liệu, bao gồm cả một chút điều chỉnh cấu hình. Chúng tôi đã chuẩn bị một cấu trúc chính xác cho Ansible (không có thông tin như vậy trong tài liệu):

/root/pxcansible/
├── inventory
├── pxcplay.yml
└── roles
    └── ansible-role-XtraDB-Cluster

Sau đó, chúng tôi chạy nó nhưng ngay lập tức chúng tôi gặp lỗi:

[email protected]:~/pxcansible# ansible-playbook pxcplay.yml
 [WARNING]: provided hosts list is empty, only localhost is available

ERROR! no action detected in task

The error appears to have been in '/root/pxcansible/roles/ansible-role-XtraDB-Cluster/tasks/main.yml': line 28, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


- name: "Include {{ ansible_distribution }} tasks"
  ^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes.  Always quote template expression brackets when they
start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"

Quá trình này mất 1 phút 45 giây.

Khắc phục sự cố về cú pháp Playbook - 3 phút 25 giây

Lỗi đã gây nhầm lẫn nhưng nguyên tắc chung là hãy thử phiên bản Ansible mới hơn, mà chúng tôi đã làm. Chúng tôi đã truy cập và tìm thấy các hướng dẫn tốt trên trang web Ansible. Lần thử tiếp theo để chạy playbook cũng không thành công:

TASK [ansible-role-XtraDB-Cluster : Delete anonymous connections] *****************************************************************************************************************************************************************************************************************
fatal: [node2]: FAILED! => {"changed": false, "msg": "The PyMySQL (Python 2.7 and Python 3.X) or MySQL-python (Python 2.X) module is required."}
fatal: [node3]: FAILED! => {"changed": false, "msg": "The PyMySQL (Python 2.7 and Python 3.X) or MySQL-python (Python 2.X) module is required."}
fatal: [node1]: FAILED! => {"changed": false, "msg": "The PyMySQL (Python 2.7 and Python 3.X) or MySQL-python (Python 2.X) module is required."}

Việc thiết lập phiên bản Ansible mới và chạy playbook đến lỗi này mất 3 phút 25 giây.

Sửa lỗi thiếu mô-đun Python - 3 phút 20 giây

Rõ ràng, vai trò mà chúng tôi sử dụng đã không quan tâm đến các điều kiện tiên quyết của nó và một mô-đun Python bị thiếu để kết nối và bảo mật cụm Galera. Đầu tiên, chúng tôi đã cố gắng cài đặt MySQL-python qua pip nhưng rõ ràng là sẽ mất nhiều thời gian hơn vì nó yêu cầu mysql_config:

[email protected]:~# pip install MySQL-python
Collecting MySQL-python
  Downloading https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip (108kB)
    100% |████████████████████████████████| 112kB 278kB/s
    Complete output from command python setup.py egg_info:
    sh: 1: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-zzwUtq/MySQL-python/setup.py", line 17, in <module>
        metadata, options = get_config()
      File "/tmp/pip-build-zzwUtq/MySQL-python/setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "/tmp/pip-build-zzwUtq/MySQL-python/setup_posix.py", line 25, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-zzwUtq/MySQL-python/

Điều đó được cung cấp bởi các thư viện phát triển MySQL, vì vậy chúng tôi sẽ phải cài đặt chúng theo cách thủ công, điều này khá vô nghĩa. Chúng tôi quyết định sử dụng PyMySQL, không yêu cầu cài đặt các gói khác. Điều này đưa chúng tôi đến một vấn đề khác:

TASK [ansible-role-XtraDB-Cluster : Delete anonymous connections] *****************************************************************************************************************************************************************************************************************
fatal: [node3]: FAILED! => {"changed": false, "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1698, u\"Access denied for user 'root'@'localhost'\")"}
fatal: [node2]: FAILED! => {"changed": false, "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1698, u\"Access denied for user 'root'@'localhost'\")"}
fatal: [node1]: FAILED! => {"changed": false, "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1698, u\"Access denied for user 'root'@'localhost'\")"}
    to retry, use: --limit @/root/pxcansible/pxcplay.retry

Cho đến thời điểm này, chúng tôi đã dành 3 phút 20 giây.

Sửa lỗi “Quyền truy cập bị từ chối” - 18 phút 55 giây

Đối với lỗi, chúng tôi đã đảm bảo rằng cấu hình MySQL được chuẩn bị chính xác và nó bao gồm người dùng và mật khẩu chính xác để kết nối với cơ sở dữ liệu. Thật không may, điều này đã không hoạt động như mong đợi. Chúng tôi đã điều tra thêm và nhận thấy rằng vai trò đã không tạo người dùng root đúng cách, mặc dù nó đã đánh dấu bước là đã hoàn thành. Chúng tôi đã thực hiện một cuộc điều tra ngắn nhưng quyết định thực hiện sửa lỗi thủ công thay vì cố gắng gỡ lỗi playbook, việc này sẽ mất nhiều thời gian hơn so với các bước chúng tôi đã làm. Chúng tôi vừa tạo thủ công người dùng [email protected][email protected] với mật khẩu chính xác. Điều này cho phép chúng tôi vượt qua bước này và chuyển sang một lỗi khác:

TASK [ansible-role-XtraDB-Cluster : Start the master node] ************************************************************************************************************************************************************************************************************************
skipping: [node1]
skipping: [node2]
skipping: [node3]

TASK [ansible-role-XtraDB-Cluster : Start the master node] ************************************************************************************************************************************************************************************************************************
skipping: [node1]
skipping: [node2]
skipping: [node3]

TASK [ansible-role-XtraDB-Cluster : Create SST user] ******************************************************************************************************************************************************************************************************************************
skipping: [node1]
skipping: [node2]
skipping: [node3]

TASK [ansible-role-XtraDB-Cluster : Start the slave nodes] ************************************************************************************************************************************************************************************************************************
fatal: [node3]: FAILED! => {"changed": false, "msg": "Unable to start service mysql: Job for mysql.service failed because the control process exited with error code. See \"systemctl status mysql.service\" and \"journalctl -xe\" for details.\n"}
fatal: [node2]: FAILED! => {"changed": false, "msg": "Unable to start service mysql: Job for mysql.service failed because the control process exited with error code. See \"systemctl status mysql.service\" and \"journalctl -xe\" for details.\n"}
fatal: [node1]: FAILED! => {"changed": false, "msg": "Unable to start service mysql: Job for mysql.service failed because the control process exited with error code. See \"systemctl status mysql.service\" and \"journalctl -xe\" for details.\n"}
    to retry, use: --limit @/root/pxcansible/pxcplay.retry

Đối với phần này, chúng tôi đã dành 18 phút và 55 giây.

Khắc phục sự cố “Start the Slave Nodes” (phần 1) - 7 phút 40 giây

Chúng tôi đã thử một số cách để giải quyết vấn đề này. Chúng tôi đã cố gắng chỉ định nút bằng cách sử dụng tên của nó, chúng tôi đã cố gắng chuyển đổi tên nhóm, không có gì giải quyết được vấn đề. Chúng tôi quyết định làm sạch môi trường bằng cách sử dụng tập lệnh được cung cấp trong tài liệu và bắt đầu lại từ đầu. Nó đã không làm sạch nó mà chỉ làm cho mọi thứ thậm chí còn tồi tệ hơn. Sau 7 phút 40 giây, chúng tôi quyết định xóa sạch các máy ảo, tạo lại môi trường và bắt đầu lại từ đầu với hy vọng rằng khi chúng tôi thêm các phụ thuộc Python, điều này sẽ giải quyết được vấn đề của chúng tôi.

Khắc phục sự cố “Start the Slave Nodes” (phần 2) - 13 phút 15 giây

Thật không may, việc thiết lập các điều kiện tiên quyết trong Python hoàn toàn không giúp được gì. Chúng tôi quyết định kết thúc quá trình theo cách thủ công, khởi động nút đầu tiên và sau đó định cấu hình người dùng SST và bắt đầu các nô lệ còn lại. Quá trình này đã hoàn tất quá trình thiết lập "tự động" và chúng tôi mất 13 phút 15 giây để gỡ lỗi và cuối cùng chấp nhận rằng nó sẽ không hoạt động như mong đợi của nhà thiết kế playbook.

Gỡ lỗi thêm - 10 phút 45 giây

Chúng tôi không dừng lại ở đó và quyết định rằng chúng tôi sẽ thử thêm một điều nữa. Thay vì dựa vào các biến Ansible, chúng ta chỉ đặt IP của một trong các nút làm nút chính. Điều này đã giải quyết được một phần của vấn đề và chúng tôi đã kết thúc với:

TASK [ansible-role-XtraDB-Cluster : Create SST user] ******************************************************************************************************************************************************************************************************************************
skipping: [node2]
skipping: [node3]
fatal: [node1]: FAILED! => {"changed": false, "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1045, u\"Access denied for user 'root'@'::1' (using password: YES)\")"}

Đây là phần cuối của những nỗ lực của chúng tôi - chúng tôi đã cố gắng thêm người dùng này nhưng nó không hoạt động chính xác thông qua playbook có thể trả được trong khi chúng tôi có thể sử dụng địa chỉ máy chủ cục bộ IPv6 để kết nối khi sử dụng máy khách MySQL.

Tổng thời gian cài đặt - Không xác định (Cài đặt tự động không thành công)

Tổng cộng chúng tôi đã dành 64 phút và chúng tôi vẫn chưa quản lý để mọi thứ diễn ra tự động. Các vấn đề còn lại là tạo mật khẩu gốc dường như không hoạt động và sau đó khởi động Cụm Galera (vấn đề người dùng SST). Thật khó để biết sẽ mất bao lâu để gỡ lỗi thêm. Điều đó chắc chắn là có thể - rất khó để định lượng vì nó thực sự phụ thuộc vào kinh nghiệm với Ansible và MySQL. Nó chắc chắn không phải là thứ mà ai cũng có thể tải xuống, cấu hình và chạy. Chà, có lẽ một cuốn sách chơi khác sẽ hoạt động theo cách khác? Nó có thể, nhưng nó cũng có thể dẫn đến các vấn đề khác nhau. Ok, vì vậy có một đường cong học tập để leo lên và gỡ lỗi để thực hiện nhưng sau đó, khi bạn đã sẵn sàng, bạn sẽ chỉ chạy một tập lệnh. Chà, điều đó đúng. Miễn là những thay đổi do người bảo trì đưa ra sẽ không phá vỡ thứ gì đó mà bạn phụ thuộc vào hoặc phiên bản Ansible mới sẽ phá vỡ playbook hoặc người bảo trì sẽ quên dự án và ngừng phát triển nó (đối với vai trò mà chúng tôi đã sử dụng, có một yêu cầu kéo khá hữu ích đang chờ đã được gần một năm, có thể giải quyết được vấn đề phụ thuộc Python - nó chưa được hợp nhất). Trừ khi bạn chấp nhận rằng bạn sẽ phải duy trì mã này, bạn không thể thực sự tin tưởng rằng nó chính xác 100% và hoạt động trong môi trường của bạn, đặc biệt là do nhà phát triển ban đầu không có động lực nào trong việc cập nhật mã. Ngoài ra, những phiên bản khác thì sao? Bạn không thể sử dụng playbook cụ thể này để cài đặt PXC 5.6 hoặc bất kỳ phiên bản MariaDB nào. Chắc chắn, bạn có thể tìm thấy sách vở khác. Chúng sẽ hoạt động tốt hơn hay có thể bạn sẽ dành nhiều giờ khác để cố gắng làm cho chúng hoạt động?

ClusterControlSingle Console cho Toàn bộ Cơ sở dữ liệu Cơ sở hạ tầng của bạnTìm hiểu những tính năng mới khác trong ClusterControlInstall ClusterControl MIỄN PHÍ

ClusterControl

Cuối cùng, hãy xem cách ClusterControl có thể được sử dụng để triển khai Percona XtraDB Cluster.

Định cấu hình kết nối SSH - 1 phút

ClusterControl yêu cầu kết nối SSH trên tất cả các nút để kết nối và cấu hình chúng. Chúng tôi đã tạo khóa SSH và phân phối thủ công trên các nút.

Thiết lập ClusterControl - 3 phút 15 giây

Tìm kiếm nhanh “Cài đặt ClusterControl” đã chỉ chúng tôi đến trang tài liệu ClusterControl có liên quan. Chúng tôi đang tìm kiếm một “cách đơn giản hơn để cài đặt ClusterControl” do đó chúng tôi đã theo liên kết và tìm thấy các hướng dẫn sau.

Quá trình tải xuống tập lệnh và chạy mất 3 phút 15 giây, chúng tôi phải thực hiện một số hành động trong khi quá trình cài đặt được tiến hành nên đây không phải là cài đặt không cần giám sát.

Đăng nhập vào Giao diện người dùng và Bắt đầu Triển khai - 1 phút 10 giây

Chúng tôi đã trỏ trình duyệt của mình tới IP của nút ClusterControl.

Chúng tôi đã chuyển thông tin liên hệ được yêu cầu và chúng tôi sẽ thấy màn hình Chào mừng:

Bước tiếp theo - chúng tôi đã chọn tùy chọn triển khai.

Chúng tôi phải chuyển chi tiết kết nối SSH.

Chúng tôi cũng quyết định về nhà cung cấp, phiên bản, mật khẩu và máy chủ để sử dụng. Toàn bộ quá trình này mất 1 phút 10 giây.

Triển khai cụm Percona XtraDB - 12 phút 5 giây

Việc duy nhất còn lại là đợi ClusterControl hoàn thành việc triển khai. Sau 12 phút 5 giây, cụm đã sẵn sàng:

Tổng thời gian cài đặt - 17 phút 30 giây

Các tài nguyên liên quan ClusterControl cho MySQL ClusterControl cho MariaDB ClusterControl cho Galera Cluster

Chúng tôi đã quản lý để triển khai ClusterControl và sau đó là cụm PXC bằng cách sử dụng ClusterControl trong 17 phút 30 giây. Bản thân việc triển khai PXC mất 12 phút 5 giây . Cuối cùng, chúng tôi có một cụm làm việc, được triển khai theo các thông lệ tốt nhất. ClusterControl cũng đảm bảo rằng cấu hình của cụm có ý nghĩa. Nói tóm lại, ngay cả khi bạn không thực sự biết gì về MySQL hoặc Galera Cluster, bạn có thể triển khai một cụm sẵn sàng sản xuất trong vài phút. ClusterControl không chỉ là một công cụ triển khai, nó còn là nền tảng quản lý - giúp mọi thứ trở nên dễ dàng hơn đối với những người chưa có kinh nghiệm với MySQL và Galera để xác định các vấn đề về hiệu suất (thông qua cố vấn) và thực hiện các hành động quản lý (mở rộng cụm lên và xuống, chạy sao lưu, tạo nô lệ không đồng bộ cho Galera). Điều quan trọng là, ClusterControl sẽ luôn được duy trì và có thể được sử dụng để triển khai tất cả các phiên bản MySQL (và không chỉ MySQL / MariaDB, nó còn hỗ trợ TimeScaleDB, PostgreSQL và MongoDB). Nó cũng hoạt động hiệu quả, một điều không thể nói về các phương pháp khác mà chúng tôi đã thử nghiệm.

Nếu bạn muốn trải nghiệm tương tự, bạn có thể tải xuống ClusterControl miễn phí. Hãy cho chúng tôi biết bạn thích nó như thế nào.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển sang MariaDB Backup

  2. Cách MONTH () hoạt động trong MariaDB

  3. So sánh các sản phẩm cung cấp trên đám mây cụm Galera:Phần thứ ba Microsoft Azure

  4. Cách thay thế MySQL hoặc MariaDB Master trung gian bằng máy chủ Binlog sử dụng MaxScale

  5. Cách hoạt động của EXP () trong MariaDB