Lưu trữ thẻ: #mysql

Hướng dẫn cài đặt wordpress trên Ubuntu

I. Tổng quan

WordPress là một CMS (content management system) mã nguồn mở cho phép người dùng xây dựng và quản lý nội dung trên website. WordPress cung cấp cơ sở hạ tầng cơ bản để xây dựng một website, do đó nó phù hợp với hầu hết đối tượng người sử, bao gồm cả đối tượng là người sử dụng có ít kiến thức về lập trình.

Có nhiều cách để cài đặt một website WordPress, trong đó có những cách khá đơn giản đã được tích hợp sẳn trên các công cụ Hosting Control Panel (DirectAdmin, Cpanel,…) . Hướng dẫn dưới đây sẽ cài đặt WordPress thông qua cửa sổ dòng lệnh trên hệ điều hành Linux. Đây là cách cài đặt phức tạp và yêu cầu nhiều bước tiến , nhưng mặt khác cung cấp cho người dùng phương thức quản lý tốt hơn đối với website WordPress và môi trường mà nó chạy trên.

Môi trường cụ thể:

  • Hệ điều hành: Ubuntu 18.04
  • Web Server: Apache 2.4.54 + PHP 7.4
  • SQL Server: MySQL 10.6.9

II. Hướng dẫn cụ thể

  1. Cài đặt APACHE
    • Thực hiện lệnh cài đặt:
      # sudo apt install apache2
    • Start và enable dịch vụ Apache, đảm bảo Apache sẽ chạy cùng hệ điều hành
      sudo systemctl start apache2
      # sudo systemctl enable apache2
    • Tiến hành kiểm tra trạng thái dịch vụ Apache bằng lệnh:
      # sudo systemctl status apache2
  2. Cài đặt MYSQL
    • Trước tiên ta  tiến hành update  trước khi cài đặt một thứ gì đó bằng lệnh:
      # sudo apt update && sudo apt upgrade -y
    • Tiếp đến ta tiến hành cài đặt các  gói mysql-server:
      # sudo apt install mysql-server
    • MySQL chưa được khởi động sau khi install MySQL trên Ubuntu , nên bạn cần khởi động
      # systemctl start mysql
      # systemctl enable mysql
    • Tiến hành tạo 1 database cho website wordpress theo bằng các lệnh sau
      # mysql -u root -p

      Tạo một database trong MariaDB

      > create database wordpress;

      Tiếp đến tạo tạo một User

      > create user 'user1'@'địa chỉ Ip' IDENTIFIED BY 'password';

      Thiết lập quyền cho user để có quyền truy cập vào cơ sở dữ liệu.

      > GRANT ALL PRIVILEGES ON wordpress.* TO 'user1'@'%' IDENTIFIED BY 'password';

      > flush privileges;

  3. Cài đặt PHP-FPM
    • Để cài đặt PHP-FPM ta nên sử dụng ppa:ondrej/php PPA để có thể cài đặt phiên bản PHP-FPM mới nhất
      # sudo add-apt-repository ppa:ondrej/php
    • Tiếp theo các bạn cài đặt PHP bằng lệnh sau.
      # sudo apt -y install php7.4 php7.4-fpm
    • Đầu tiên các bạn backup lại file cấu hình mặc định
      # sudo cp /etc/php/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/www.conf.bak
    • Tiếp theo ta thực hiện lệnh Sed để thay đổi các thông số trong file www.conf
      # sudo sed -i 's/;listen.mode = 0660/listen.mode = 0660/g' /etc/php/7.4/fpm/pool.d/www.conf
      # sudo sed -i 's/;security.limit_extensions = .php .php3 .php4 .php5 .php7/security.limit_extensions = .php .php3 .php4 .php5 .php7/g' /etc/php/7.4/fpm/pool.d/www.conf
    • Cuối cùng tiến hành khởi động PHP-FPM
      # systemctl start php7.4-fpm
      # systemctl enable php7.4-fpm
  4. Cài đặt WORDPRESS
    • Đầu tiên ta cần tạo 1 foder Public_Apache
      # mkdir /home/wordpress/Public_Apache
    • Tiến hành cài download wordpress
      # cd /home/wordpress/
      # wget https://vi.wordpress.org/latest-vi.tar.gz
    • Giải nén file source wordpress bằng lệnh
      # tar -xvf latest-vi.tar.gz
    • Sau khi giải nén, bạn sẽ có file source wordpress như sau:
  5. Cấu hình Virtual Host:
    • Tạo file cấu hình virtual host cho website wordpress như sau :
      # touch /etc/apache2/site-availables/wordpress.conf
      # ln -s /etc/apache2/site-availables/wordpress.conf /etc/apache2/site-enables/
    • Ta truy cập vào file /etc/apache2/site-availables/wordpress.conf và cấu hình như sau:
      <VirtualHost *:80>
              DocumentRoot /home/wordpress/Public_Aphache/wordpress                  
              ServerName httai.tk                  
              ServerAlias www.httai.tk          
              <Directory "/home/wordpress/Public_Aphache/wordpress">
                       DirectoryIndex index.html index.php                          
                       Options FollowSymLinks                            
                       AllowOverride All                           
                       Require all granted          
               </Directory> 
      </VirtualHost>
    • Đến đây ta tiến hành cấp quyền cho thư mục
      # chown -R 755 /home/wordpress/Public_Aphache/wordpress
      # chown -R www-data:www-data /home/wordpress/Public_Aphache/wordpress
    • Truy cập vào wordpress và sử dụng thông tin MySQL đã tạo ở Phần 2 để kết nối đến database.
      Hình ảnh này chưa có thuộc tính alt; tên tệp của nó là image.png
    • Trong trường hợp gặp lỗi trong quá trình kết nối database, bạn có thể cấu hình trực tiếp ở file config trong resouce của WordPress như sau:
      # cd /home/wordpress/Public_Apache
      # mv wp-config-sample.php wp-config.php
      # vi wp-config.php
      Nhập thông tin database theo hướng dẫn ở hình dưới.
    • Tiếp tục thiết lập các thông tin của website WordPress và user quản lý, và cuối cùng nhấn Install WordPress để tiến hành cài đặt WordPress với thông tin đã cấu hình
    • Sau khi cài đặt xong, tiến hành login với tài khoản đã thiết lập ở trên.

Như vậy, Long Vân đã hoàn thành hướng dẫn Quý khách cài đặt WordPress trên server Ubuntu. Chúc Quý khách thành công!

Hướng dẫn reset password MYSQL8

MYSQL là một hệ quản trị cơ sở dữ liệu rất phổ biến, đặc biệt là đối với các máy chủ chạy dịch vụ web. Trong bài viết này, Long Vân sẽ hướng dẫn Quý khách cách reset lại password cho MYSQL phiên bản 8.0. Các bước cụ thể như sau:

  1. Bước 1: Kiểm tra phiên bản MYSQL đang sử dụng bằng lệnh
    # mysqld -V


    Theo hình, phiên bản MYSQL đang sử dụng là 8.0.31

  2. Bước 2: Tạm dừng service MYSQL thực hiên lệnh
    # systemctl stop mysql
    # systemctl status mysql ( kiểm tra đảm bảo trạng thái mysql đã stop).

  3. Bước 3: Tạo thư mục chứa /var/run/mysqld’. Sau đó phân quyền thư mục vừa tạo.
    Bước này nhằm tránh lỗi “If mysqld_safe Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists”

    # mkdir -p /var/run/mysqld
    # chown mysql:mysql /var/run/mysqld
  4. Bước 4: Chạy lại MYSQL với tùy chọn “–skip-grant-tables” để chạy mysql mà không cần root password.

    # sudo mysqld_safe --skip-grant-tables &

  5. Bước 5: Tiến hành truy cập lại MYSQL mà không cân password sau đó cài đặt lại password mới.

    # mysql -u root
    > UPDATE mysql.user SET authentication_string=null WHERE User='root';
    > flush privileges;
    > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_root_password';
    > flush privileges;
    > quit

  6. Bước 6: Khởi động lại MYSQL và kiểm tra truy cập với password vừa thiết lập

Vậy là mình đã hướng dẫn xong phần reset password Mysql8 trên hệ điều hành Ubuntu 22.04. Chúc các bạn thành công.

Giới thiệu về Galera Cluster và cách cài đặt MySQL Galera Cluster trên Ubuntu 22.04

Galera Cluster là một giải pháp đồng bộ hóa dữ liệu mạnh mẽ dành cho MySQL, giúp tạo ra một hệ thống MySQL phân tán với tính nhất quán cao giữa các node trong cluster. Galera Cluster được sử dụng phổ biến trong các môi trường yêu cầu tính sẵn sàng cao, cho phép quản lý nhiều node cùng lúc mà vẫn đảm bảo tính toàn vẹn của dữ liệu.
Trong bài viết này Long Vân sẽ giới thiệu và hướng dẫn các bước để cài đặt cấu hình Galera Cluster cho MySQL, bao gồm:

  • Giới thiệu về Galera Cluster.
  • Sự khác nhau giữa Galera Cluster và mô hình Replication thường.
  • Hướng dẫn cài đặt Galera Cluster.
  • Thêm node Slave

I. Giới thiệu MySQL Galera Cluster

MySQL Galera Cluster là một hệ thống Multi-Master mà trên đó tất cả node đều có thể đọc và ghi dữ liệu tại mọi thời điểm. Client có thể kết nối tới mọi node, dữ liệu sẽ được tự động đồng bộ giữa các node, đồng thời sẽ đồng bộ sang node mới khi mới được thêm vào Cluster.

Một cụm Galera cần có ít nhất 3 node và ưu tiên chạy với số lượng node lẻ để đảm bảo tính toàn vẹn khi xảy ra sự cố với một trong các node.

II .Sự khác nhau giữa Galera Cluster với mô hình Mysql Replicate thường.

  1. Sơ đồ minh họa 
  2. Sự khác nhau
    • MySQL Replication (Hình bên trái)
      • Mô hình Master-Slave: Dữ liệu từ máy chủ chính (Master) sẽ được ghi vào một tệp log (Binlog). Sau đó, dữ liệu này được gửi tới máy chủ phụ (Slave) thông qua các luồng sao chép (IO Thread, SQL Thread).
      • Chế độ ghi và đọc:
        • Master: Cho phép thực hiện cả đọc và ghi dữ liệu.
        • Slave: Chỉ cho phép đọc dữ liệu (không ghi).
      • Nhược điểm chính của mô hình này là có độ trễ trong việc sao chép dữ liệu và chỉ có một máy chủ chính (Master) thực hiện các tác vụ ghi. Điều này có thể gây ra hiện tượng nghẽn cổ chai nếu có quá nhiều yêu cầu ghi vào Master.
    • Galera Cluster (Hình bên phải)

      • Mô hình Multi-Master: Mỗi node trong cụm Galera đều có thể thực hiện cả đọc và ghi dữ liệu. Các giao dịch sau khi được thực hiện sẽ được đồng bộ hóa tức thời giữa các node bằng cách sử dụng API wsrep và cơ chế giao tiếp nhóm (group communication).
      • Chế độ ghi và đọc:
        • Tất cả các node đều có khả năng đọc/ghi (read/write).
      • Galera sử dụng phương pháp đồng bộ dữ liệu đồng thời trên tất cả các node, giúp loại bỏ độ trễ và cho phép ghi vào bất kỳ node nào mà không lo xung đột hoặc mất dữ liệu. Mô hình này đảm bảo tính nhất quán cao hơn so với MySQL Replication.
    • Tóm lại
      • MySQL Replication chỉ có một máy chủ chính (Master) thực hiện các tác vụ ghi và có độ trễ khi sao chép dữ liệu sang máy chủ phụ (Slave).
      • Galera Cluster cho phép mọi node đều có thể ghi và dữ liệu được đồng bộ hóa đồng thời, giúp giảm thiểu các vấn đề về xung đột và độ trễ.

III. Hướng dẫn cài đặt Mysql Galera Cluster

  1. Chuẩn bị:
    • Ở bài viết này Long Vân sẽ sử dụng 4 VPS được cài đặt sẵn Os Ubuntu 22.04. Trong đó
      • 1 server làm Controller , cài đặt Galera Manager
        • 192.168.70.188 ( lvsnodecontroller)
      • 3 server để cấu hình Mysql Galera Cluster
        • 192.168.70.156 ( lvsnode1)
        • 192.168.70.159 ( lvsnode2)
        • 192.168.70.168 ( lvsnode3)
  2. Tiến hành cài đặt:
    • Cập nhật lại hệ thống cho cả 4 node
      sudo apt-get update
      sudo apt-get upgrade 
    • Trên Server Controller ( lvsnodecontroller)
      • Cài đặt trình quản lí Galera Manager để quản lí các lvsnode
        wget https://galeracluster.com/galera-manager/gm-installer
        chmod +x gm-installer
        ./gm-installer install 

        • Chọn a để accept cài đặt .
        • Điền thông tin user admin và password (cần đặt password ở bước này sau đó mới đổi password để tránh không login được ).
        • Điền thông tin server làm controller -> nhấn Enter 
        • Chạy lại cập nhật hệ thống để apply Galera-Manager vừa khởi  tạo
          sudo apt-get update
          sudo apt-get upgrade 
        • Truy cập trình duyệt để tạo Galera Cluster với user và password đã tạo ở trước đó 
        • Lúc này, quản trị viên có thể thực hiện các thao tác trên giao diện controller như tạo Cluster hoặc thêm node vào Cluster.
      • Tạo Cluster:
        • Trong giao diện Galera Controller, chọn ADD CLUSTER -> Deloy cluster on user-provided hosts
        • Nhập thêm thông tin tên Cluster và chọn cơ sở dữ liệu muốn sử dụng ở đây Long Vân sẽ chạy với mysql8.0. Chọn host system là hệ điều hành đang chạy.
        • Click chọn I have added public key to /root/.ssh/authorized_keys file on all nodes
        • Copy đoạn key trên và thêm vào cấu hình /root/.ssh/authorized_keys của các node còn lại ( lvsnode1, lvsnode2, lvsnode3 ).
        • Trên trình duyệt Galena Controller tiếp tục chọn ADD NODE. Thêm thông Node cần thêm –>CHECK ACCESS –> DEPLOY ( ở đây thêm lvsnode1 node đầu tiên vào).

        • Thêm tiếp các node còn lại lvsnode2 và lvsnode3 tương tự như làm ở lvsnode1.
        • Quá trình thêm node hoàn tất.
    • Kiểm tra quá trình đồng bộ giữa các lvsnode trên Cluster
      • Kiểm tra hoạt động của LongVan_Cluster vừa tạo giữa các lvsnode
      • Kiểm tra tính đồng bộ dữ liệu trên database
      • Tiến hành tạo database có tên lvsdemo ở lvsnode1 và kiểm tra đồng bộ ở lvsnode2 và lvsnode3 (như hình trên).

IV. Thêm node Slave vào trong Galera Cluster.

  1. Trong Galera Cluster, bạn có thể kết nối một node không đồng bộ (async slave) vào cụm. Điều này hữu ích vì vài lý do:

    • Chuyển tải truy vấn : Nếu cụm của bạn phải xử lý các truy vấn  hoặc phân tích dài và nặng, nó có thể làm chậm cả hệ thống. Bằng cách gửi các truy vấn này đến một máy chủ async slave riêng, bạn ngăn không cho tải này ảnh hưởng đến Galera Cluster.

    • Sao lưu trực tiếp: Async slave cũng có thể được sử dụng như một sao lưu từ xa, giúp tạo một bản sao dữ liệu trực tiếp để khôi phục khi gặp sự cố.

  2. Các bước thêm node Async
    • Thêm 1 Server  cho quá trình thêm Node Async ( Slave )
      • 192.168.70.180 ( lvsnode4 )
    • Trên node lvsnode4
      • Cài đặt galera-4 mysql-wsrep-8.0
        • Trước tiên, cần đảm bảo rằng khóa Galera Cluster GPG đã được cài đặt:

          apt-key adv --keyserver keyserver.ubuntu.com --recv 8DA84635 

        • Thêm thư viện souce list
          vi /etc/apt/sources.list.d/galera.list 
          deb https://releases.galeracluster.com/galera-4.20/ubuntu jammy main
          deb https://releases.galeracluster.com/mysql-wsrep-8.0.39-26.20/ubuntu jammy main 
        • Thêm kho lưu trữ
          vi /etc/apt/preferences.d/galera.pref 
          Package: *
          Pin: origin releases.galeracluster.com
          Pin-Priority: 1001 
        • Chạy lại update để cập nhật thư viện và kho lưu trữ vừa thêm
          sudo apt-get update 

        • Cài đặt galera-4 mysql-wsrep-8.0
          sudo apt-get install galera-4 mysql-wsrep-8.0 
        • Thêm cấu hình vào file conf mysql vừa đặt
          vi /etc/mysql/mysql.conf.d/mysqld.cnf 
          gtid_mode=ON
          log_bin=binlog
          log_slave_updates=1
          enforce_gtid_consistency
          expire_logs_days=7
          server_id=4
          binlog_format=ROW
          slave_net_timeout=60 
        • Khởi động lại Mysql để lưu lại cấu hình
          systemctl restart mysql 
    • Trên node lvsnode1
      • Thêm cấu hình vào file conf mysql
        vi /etc/mysql/mysql.conf.d/mysqld.cnf 
        gtid_mode=ON
        log_bin=binlog
        log_slave_updates=1
        enforce_gtid_consistency
        expire_logs_days=7
        server_id=1
        binlog_format=ROW 
      • Khởi động lại Mysql để lưu lại cấu hình
        systemctl restart mysql 
      • Tạo user replica cho node lvsnode4
        mysql
        CREATE USER 'replica'@'192.168.70.180' IDENTIFIED WITH 'mysql_native_password' BY 'P@ssw0rd321';
        GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.70.180';
        FLUSH PRIVILEGES;
        exit 

      • Trên node lvsnode4
        • Cấu hình replicate với user vừa tạo ở node lvsnode1
          mysql
          CHANGE MASTER TO MASTER_HOST = '192.168.70.156', MASTER_PORT = 3306, MASTER_USER = 'replica', MASTER_PASSWORD = 'P@ssw0rd321', MASTER_AUTO_POSITION = 1;
          START SLAVE;
          SHOW SLAVE STATUSG; 

      • Kiểm tra đồng bộ giữa server Master ( lvsnode1) và server Slave ( lvsnode4 ).
        • Đứng từ server Master (lvsnode1) tạo database với tên lvsdemo1  để xem quá trình đồng bộ từ Master (lvsnode1) xuống Slave (lvsnode4).
        • Ngược lại từ server Slave (lvsnode4) tạo database với tên lvsdemo2  để xem quá trình có đồng bộ ngược từ Slave ( lvsnode4 ) về Master ( lvsnode1).
        • Kết quả cho thấy dữ liệu phát sinh trên server Slave sẽ không đồng bộ ngược lại.

 

Như vậy qua bài viết này Long Vân đã giúp các bạn tìm hiểu sơ lược về Galera Cluster cũng như cách cài đặt Mysql Galera Cluster với cấu hình 3 node trên Galera-Manager là như thế nào. Chúc các bạn thành công .


Hướng dẫn hạ cấp phiên bản MySQL/MariaDB trên DirectAdmin

I. Tổng quan

Trong bài viết này Long Vân sẽ hướng dẫn hạ version mysql MariaDB trên DirectAdmin đơn giản và nhanh chóng. Để tránh rủi ro Quý Khách nên sao lưu database để tránh trường hợp xấu nhất xảy ra khiến dữ liệu bị lỗi.

II. Hướng dẫn hạ cấp MariaDB trên DirectAdmin

Để hạ version Mysql/MariaDB trên DirectAdmin chúng ta cần thực hiện các bước sau

  1. Bước 1: SSH vào server
    Quý khách có thể tham khảo bài viết hướng dẫn sau
    Hướng dẫn đăng nhập vào VPS Linux với giao thức SSH
  2. Bước 2: Kiểm tra phiên bản MySQL/MariaDB đang sử dụng hiện tại, bằng lệnh
    mysql -V
    Theo ví dụ trên hình, phiên bản đang cài hiện tại là 10.6.16.
  3. Bước 3: Hạ cấp MariaDB trên DirectAdmin với Custombuild
    • Chúng ta sẽ tiến hành xóa hoàn toàn phiên bản hiện tại đang có và thực hiện bước sao lưu trước để tránh mất dữ liệu database ở thư mục /var/lib/mysql
    • Sử dụng lệnh để tắt dịch vụ mysql và sao lưu thư mục /var/lib/mysql thành thư mục /var/lib/mysql.bk
      # perl -pi -e 's/mysqld=ON/mysqld=OFF/' /usr/local/directadmin/data/admin/services.status
      # systemctl stop mysql
      # mv /var/lib/mysql /var/lib/mysql.bk
      # cd /usr/local/directadmin/custombuild
    • Cấu hình  điều chỉnh cấu hình phiên bản (Bạn có thể thay đổi thành phiên bản khác nếu muốn):
      # ./build set mariadb 10.5
      # ./build set mysql_inst mariadb   (Sử dụng hệ quản trị cơ sở dữ liệu là MariaDB)
      # ./build set mysql_backup no    (Tắt sao lưu database tự động vì hiện tại MariaDB đã không còn hoạt động)
    • Cập nhật lại custombuild script và bắt đầu quá trình cài lại sau khi cài xong, sẽ có thông tin mật khẩu user database root kèm mật khẩu.
    • Quá trình cài lại MariaDB cũng không mất quá nhiều thời gian. Sau khi cài xong chúng ta sử dung tiếp lệnh mariadb -V hoặc mysqld -V để xem phiên bản mới vừa được cài đặt nhé.
    • Phiên bản MariaDB được cài đặt là 10.5.24, đã được hạ cấp MariaDB 10.6.16 về phiên bản MariaDB 10.5.24

Như vậy Long Vân đã hoàn thành hướng dẫn Quý Khách cách hạ version MySQL/MariaDB trên DirectAdmin , chúc Quý Khách thành công!

Hướng dẫn cài đặt XAMPP trên Windows

I. XAMPP là gì?

    •   XAMPP viết tắt của Cross-Platform, được phát triển bởi Apache Friends. Đây là một ứng dụng máy chủ web mã nguồn mở và hoàn toàn miễn phí giúp các nhà phát triển tạo và thử nghiệm dụng ngay trên máy chủ web cục bộ. Xampp chứa các ứng dụng như Apache HTTP Server, MariaDB, PHP và Perl có thể được cài đặt dể dàng trên Windows, Linux hoặc MacOS.

   •   Trong bài viết này, Long Vân sẽ hướng dẫn Quý khách cách cài đặt XAMPP trên hệ điều hành Windows.

II. Hướng dẫn cài đặt XAMPP trên Windows

  1. Bước 1: Tải xuống XAMPP Truy cập trang web chính thức của XAMPP tại https://www.apachefriends.org/download.html. Tại đây, bạn có thể chọn phiên XAMPP mong muốn cho môi trường Windows và nhấn download để tải về.
  2. Bước 2: Cài đặt XAMPP
    • Chạy file cài đặt đã download về.
    • Nhấn nút Run để bắt đầu quá trình cài đặt.
    • Chọn các ứng dụng thành phần mong muốn cài đặt (MySQL, Perl, Tomcat,..) và nhấn Next.
    • Nhập đường dẫn cho nơi bạn muốn cài đặt XAMPP và nhấn nút Next.
    • Chọn ngôn ngữ mà bạn muốn sử dụng và nhấn nút “OK”.
    • Nhấn nút Install để bắt đầu quá trình cài đặt.
    • Sau khi tải xong nhấn finish để hoàn tất .

III. Cách cấu hình XAMPP trên Windows

  • Trong cửa sổ làm việc XAMPP Control Panel, trong phần Modules, bạn sẽ tìm thấy tất cả các module ứng dụng có sẵn. Để chạy một module, chỉ nhận nhấn vào Start.
  • Khi bạn chạy một module như Apache và MySQL, Xampp cũng sẽ hiển thị số ID tiến trình (PID) và số cổng TCP/IP (Port) tương ứng. Có thể nhấp vào nút Admin để có quyền truy cập vào trang tổng quan quản trị cho từng service và xác minh rằng mọi thứ đang hoạt động chính xác.
  • Lưu ý: trong trường hợp các port mặc định của module bị chiếm dụng bởi một ứng dụng khác, module có thể bị lỗi khi khởi chạy.
  • Nút Config để cấu hình mô-đun nào sẽ tự động khởi động khi bạn khởi chạy XAMPP.

  • Nút Netstart sẽ cung cấp cho bạn danh sách các service hiện đang truy cập mạng, bao gồm địa chỉ TCP/IP và cổng, cũng nhự thông tin ID tiến trình.
  • Cuối cùng, bạn sẽ thấy phần nhật ký, nơi bạn có thể xem qua những gì sẽ xảy ra mỗi khi bạn khởi động mô-đun hoặc thay đổi cài đặt. 
  • Để kiểm tra hoạt động của module Apache, bạn có thể truy cập http://localhost/ hoặc địa chỉ ip để vào kiểm tra.

Như vậy, Long Vân đã hoàn thành hướng dẫn Quý khách cách cài đặt XAMPP trên dịch vụ Windows của Long Vân. Chúc Quý khách thành công!

Hướng dẫn cài đặt LAMP trên Ubuntu 22.04

LAMP viết tắt của Linux OS, Apache HTTP Server, MySQL/MariaDB/MongoDB, php, perl hoặc python được sử dụng để tạo các trang web động.

Các thành phần này đều là phần mềm mã nguồn mở và miễn phí, phù hợp để xây dựng các trang web động hoặc các ứng dụng web khác và là nền tảng được sử dụng ưa chuộng trên Internet hiện nay.

Cài đặt LAMP có thể cài đặt từng bước hoặc cài đặt theo một lệnh duy nhất

$ sudo apt install apache2 php php-mysql mysql-client mysql-server

Sau khi quá trình cài đặt hoàn tất máy chủ sẽ hỏi bản có muốn khởi động lại hạt nhân(kernel) hay không, hãy thao tác enter để tiếp tục.

Để kiểm tra thông tin phiên bản php, hãy tạo tệp “info.php” trong đường dẫn máy chủ “/var/www/html” với nội dung sau.

$ sudo echo "<?php phpinfo(); ?>" > /var/www/html/info.php

Sau khi tạo tệp info hãy thử truy cập đường dẫn http://{IP Server}/info.php để kiểm tra sẽ hiện thông tin như hình dướiNhư vậy, Long Vân đã hoàn thành hướng dẫn cài đặt LAMP trên Ubuntu 22.04. Chúc Quý khách thành công!

Hướng dẫn cấu hình MySQL Master-Master Replication

I. Giới thiệu giải pháp

Lưu ý: thiết lập này mang lại một số vấn đề tiềm ẩn khi thay đổi dữ liệu đang xảy ra trên cả hai nodes. Nó có thể gặp vấn đề nếu có table với các trường auto_increment. Nếu cả hai máy chủ đang chèn hoặc cập nhật trong cùng một table, việc sao chép sẽ bị hỏng trên một máy chủ do lỗi “duplicate entry“. Để giải quyết vấn đề này, bạn cần thiết lập “auto_increment_increment” và “auto_increment_offset”.

Trong trường hợp này sẽ sử dụng thiếp lập master-master làm bản sao chủ độngthụ động. Nếu đã biết chỉ có một nodes đang thực hiện sửa đổi dữ liệu, bạn có thể tránh được nhiều vấn đề có thể xảy ra. Trong trường hợp dữ liệu chuyển đổi dự phòng, “slave” có thể dễ dàng được đưa lên làm dữ liệu chính(master). Sửa đổi dữ liệu được tự động sao chép sang nodes không thành công khi nó sao lưu.

Mô hình

II. Chuẩn bị

Ở đây ta cần có hai máy chủ đã cài đặt sẵn MySQL có cùng phiên bản để cấu hình. Trong bài hướng dẫn này, Long Vân sử dụng 2 máy chủ MySQL được thiết lập như sau:

  • Hệ điều hành: Ubuntu 22.04
  • Cơ sở dữ liệu: MySQL 8.0.36

III. Cấu hình

Cài đặt MySQL (trên 2 máy chủ)

$ wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
$ sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
$ apt-cache search mysql-server
$ sudo apt install mysql-server-8.0 -y 

Dừng MySQL trên cả hai máy chủ:

sudo systemctl stop mysql.service 

MASTER1 – (Bước 1. Cấu hình trên máy chủ đầu tiên)

Chỉnh sửa tệp cấu hình /etc/mysql/mysql.conf.d/mysqld.cnf

#bind-address           = 127.0.0.1
server-id = 200
report_host = master1
log_bin = /var/log/mysql/mariadb-bin
log_bin_index = /var/log/mysql/mariadb-bin.index
relay_log = /var/log/mysql/relay-bin
relay_log_index = /var/log/mysql/relay-bin.index
#replicate-do-db = test_db
auto_increment_increment = 5
auto_increment_offset = 1 

#bind-address = 127.0.0.1
Theo mặc định, MySQL chỉ cho phép các kết nối từ máy chủ cục bộ. Chúng ta cần xóa hoặc # dòng này lại để cho phép kết nối từ các máy chủ khác. Mục này rất quan trọng để mở rộng kết nối để hoạt động.

server-id = 200
report_host = master1

Thiết lập ID duy nhất cho máy chủ. Ở hướng dẫn này sẽ thiết lập sử dụng chữ số cuối của địa chỉ IP. Tùy chọn, ta có thể thiết lập tham số report_host cho các máy chủ có thể giao tiếp lẫn nhau thông qua hostnames đã thiết đặt.

log_bin = /var/log/mysql/mariadb-bin
log_bin_index = /var/log/mysql/mariadb-bin.index

Cho phép ghi nhật ký nhị phân (Enable binary logging).

relay_log = /var/log/mysql/relay-bin
relay_log_index = /var/log/mysql/relay-bin.index

Cho phép tạo tệp relay_log. Các Events trong các nhật ký nhị phân(master’s binary log) sẽ được ghi vào slave relay log.

replicate-do-db = testdb
Với tùy chỉnh này, ta có thể thiết lập với MySQL cơ sở dữ liệu nào cần sao chép. Tham số này là tùy chọn.

Tiếp đến ta cần khởi động máy chủ MySQL

sudo systemctl start mysql.service  

Đăng nhập vào root và tạo người dùng được sử dụng để sao chép dữ liệu giữa các máy chủ. Cấp quyền thích hợp cho người dùng.

$ sudo mysql -u root -p
mysql> create user 'replusr'@'%' identified by 'replusr';
mysql> grant replication slave on *.* to 'replusr'@'%'; 

Bước cuối cùng, kiểm tra thông tin trạng thái tệp binary log vì chúng ta sẽ sử dụng thông tin này để bắt đầu sao chép(replication) trên một máy chủ(node) khác.

mysql> show master status;
+--------------------+----------+--------------+------------------+-------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+--------------------+----------+--------------+------------------+-------------------+
| mariadb-bin.000017 |      611 |              |                  |                   |
+--------------------+----------+--------------+------------------+-------------------+ 

MASTER2 (Bước 2. Cấu hình trên máy chủ thứ hai)

Chỉnh sửa tệp cấu hình /etc/mysql/mysql.conf.d/mysqld.cnf

#bind-address           = 127.0.0.1
server-id = 201
report_host = master2
log_bin = /var/log/mysql/mariadb-bin
log_bin_index = /var/log/mysql/mariadb-bin.index
relay_log = /var/log/mysql/relay-bin
relay_log_index = /var/log/mysql/relay-bin.index
#replicate-do-db = test_db
auto_increment_increment = 5
auto_increment_offset = 1 

Khởi động máy chủ MySQL

sudo systemctl start mysql.service  

tạo người dùng được sử dụng để sao chép dữ liệu và cấp quyền thích hợp cho người dùng.

$ sudo mysql -u root -p
mysql> create user 'replusr'@'%' identified by 'replusr';
mysql> grant replication slave on *.* to 'replusr'@'%'; 

Để bắt đầu sao chép, nhập lệnh phía bên dưới

mysql> STOP SLAVE;
mysql> CHANGE MASTER TO MASTER_HOST='master1', MASTER_USER='replusr', MASTER_PASSWORD='replusr', MASTER_LOG_FILE='mariadb-bin.000017', MASTER_LOG_POS=611;
mysql> START SLAVE; 

Đối với MASTER_LOG_FILE và MASTER_LOG_POS. Đã sử dụng thông tin từ “show master status” ở đầu tiên.

Kiểm tra thông tin trạng thái của Slave

mysql> SHOW SLAVE STATUSG
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: master1
                  Master_User: replusr
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mariadb-bin.000017
          Read_Master_Log_Pos: 611
               Relay_Log_File: relay-bin.000028
                Relay_Log_Pos: 831
        Relay_Master_Log_File: mariadb-bin.000017
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              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: 611
              Relay_Log_Space: 1206
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           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: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 200
                  Master_UUID: c7f19e4d-0605-11ef-8f6e-005056a5dd4e
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
           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
         Replicate_Rewrite_DB:
                 Channel_Name:
           Master_TLS_Version:
       Master_public_key_path:
        Get_master_public_key: 0
            Network_Namespace:  

Lưu ý Read_Master_Log_Pos và Exec_Master_Log_Pos được đồng bộ hóa, đây là dấu hiệu tốt cho cơ sở dữ liệu của chúng ta đang đồng bộ hóa

Kiểm tra thông tin trạng thái về tệp binary logs của máy chủ MASTER2. Chúng ta sẽ cần thông tin này để bắt đầu sao chép trên máy chủ MASTER1.

mysql> show master status;
+--------------------+----------+--------------+------------------+-------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+--------------------+----------+--------------+------------------+-------------------+
| mariadb-bin.000016 |     1498 |              |                  |                   |
+--------------------+----------+--------------+------------------+-------------------+

MASTER1 – (Bước 3. Sao chép dữ liệu từ MASTER2 sang MASTER1)

Bắt đầu replication dữ liệu từ MASTER2 sang MASTER1

mysql> STOP SLAVE;
mysql> CHANGE MASTER TO MASTER_HOST='master2', MASTER_USER='replusr', MASTER_PASSWORD='replusr', MASTER_LOG_FILE='mariadb-bin.000016', MASTER_LOG_POS=1498;
mysql> START SLAVE; 
mysql> SHOW SLAVE STATUSG
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: master2
                  Master_User: replusr
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mariadb-bin.000016
          Read_Master_Log_Pos: 1498
               Relay_Log_File: relay-bin.000030
                Relay_Log_Pos: 328
        Relay_Master_Log_File: mariadb-bin.000016
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: test_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: 1498
              Relay_Log_Space: 883
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           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: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 201
                  Master_UUID: c0db3da1-0605-11ef-8335-005056a5e4fe
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
           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
         Replicate_Rewrite_DB:
                 Channel_Name:
           Master_TLS_Version:
       Master_public_key_path:
        Get_master_public_key: 0
            Network_Namespace: 

Mọi thứ hoạt động tốt.
Hãy thử nghiệm tạo bảng và chèn một số hàng để kiểm tra bản sao.

Ở thử nghiệm này mình sẽ có thí dụ đơn giản ở server MASTER1 sẽ triển khai một trang cơ bản wordpress và thay đổi home, siteurl trong bảng wp_options

MASTER1 – (Bước 4. Kiểm tra thử thay đổi dữ liệu trên máy chủ MASTER1)

mysql> use test_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');
+-------------+-----------------+
| option_name | option_value    |
+-------------+-----------------+
| home        | http://test.com |
| siteurl     | http://test.com |
+-------------+-----------------+
2 rows in set (0.00 sec)

mysql> UPDATE wp_options SET option_value = 'http://test123.com' WHERE option_name IN ('siteurl', 'home');
Query OK, 2 rows affected (0.01 sec)
Rows matched: 2  Changed: 2  Warnings: 0 

MASTER2 – (Bước 5. Kiểm tra dữ liệu trên cơ sở dữ liệu của MASTER2)

mysql> use test_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');
+-------------+--------------------+
| option_name | option_value       |
+-------------+--------------------+
| home        | http://test123.com |
| siteurl     | http://test123.com |
+-------------+--------------------+
2 rows in set (0.00 sec) 

Ta có thể thấy nội dung bảng đã được sao chép thành công.

Nếu có sự cố ở MASTER1, trong khi đó MASTER2 vẫn hoạt động và ghi dữ liệu bình thường sẽ có thông báo lỗi Last_IO_Error trong lúc MASTER1 không hoạt động.

Sau đó khởi động lại MASTER1. Máy chủ MySQL và replication MySQL sẽ tự động kích hoạt và đồng bộ dữ liệu MASTER1 theo kịp với MASTER2.

Như vậy Long Vân đã hoàn thành hướng dẫn cấu hình MySQL Master-Master Replication, chúc Quý Khách thành công!

Hướng dẫn cấu hình Master – Slave của MySQL trên Linux

I. Giới thiệu

MySQL có một chức năng gọi là Replicate cho phép duy trì các bản sao của Database từ server Master (gốc) sang một server Slave (dự phòng) để lưu trữ các dữ liệu phục vụ cho các trường hợp bạn muốn sao lưu hoặc phòng hờ trường hợp xấu nhất nếu server gốc một ngày nào đó gặp phải vấn đề ngoài ý muốn liên quan đến dữ liệu làm việc của bạn.
Hôm nay Long Vân sẽ hướng dẫn cho các bạn cách cấu hình Master – Slave để sao lưu Database nhé.

II. Chuẩn bị

– 1 Server Linux đóng vai trò làm Master.
– 1 Server Linux đóng vai trò làm Slave.
– Cơ sở dữ liệu: MySQL 8. trở lên.

III. Cài đặt MySQL Server

1. Cài đặt MySQL

Ubuntu/Debian:

sudo apt update
sudo apt install mysql-server -y

CentOS/Redhat:

sudo yum update
sudo yum install mysql-server -y

2. Khởi động MySQL

Ubuntu/Debian:

systemctl start mysql.service
systemctl enable mysql.service

CentOS/Redhat:

systemctl start mysqld
systemctl status mysqld

IV. Cấu hình Master – Slave

Server Master

1. Truy cậo vào file cấu hình của MySQL và điều chỉnh các thông số cần thiết như sau:

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf


– bind-address: IP của server
– Master log_error: file log lỗi (mặc định)
– server-id: id của server ( bạn có thể chọn bất kỳ số nào làm giá trị nhưng số đó phải là duy nhất không được trùng với các id của server khác)
– binlog_do_db: Database mà bạn muốn Replicate
* Bạn có thể Replicate nhiều Database với chỉnh sửa như sau:
binlog_do_db = db
binlog_do_db = db_1
binlog_do_db = db_2

Sau khi điều chỉng thông số hoàn tất chúng ta sẽ restart lại MySQL để nhận cấu hình:

sudo systecmtl restart mysql

2. Tiếp theo sẽ vào MySQL tạo user và phân quyền bằng lệnh “sudo mysql“:

mysql> CREATE USER 'slave_user'@'slave_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'slave_server_ip';
mysql> FLUSH PRIVILEGES; 

*Lưu ý: thay thế các thông số của slave_user thành thành thông tin của server Slave nhé!
Tiếp theo ta sẽ truy xuất toạ độ Binary Log từ server Master

mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS; 


Đây sẽ là vị trí mà các server Slave bắt đầu sao chép database, chúng ta sẽ lưu lại thông tin của “File” và “Position”, vì sẽ cần dùng để cấu hình cho server Slave

3. Tạo Database cần sao lưu cho server Master:

mysql> CREATE DATABASE longvan_db;  
mysql> Use longvan_db; 
mysql> CREATE TABLE longvan_table ( longvan_column varchar(30) ); 
mysql> INSERT INTO longvan_table VALUES (‘longvan.net'), ('support.longvan.net');

Server Slave
Đầu tiên chúng ta sẽ vào file config của Mysql

vi /etc/mysql/mysql.conf.d/mysql.cnf


Ở đây các thông số sẽ tương tự với Master ngoại trừ server-id là đặc thù nên phải thay đổi, và ngoài ra thêm phần relay-log xác định vị trí lưu nhật ký chuyển tiếp của bản sao Database.
Restart lại MySQL để nhận cấu hình trên server Slave

sudo systemctl restart mysql

Sau đó chúng ta vào giao diện của Mysql để cấu hình cho server Slave kết nối được Master

sudo mysql
mysql> CHANGE REPLICATION SOURCE TO
mysql> SOURCE_HOST='Master_server_ip',              # ip của server Master
mysql> SOURCE_USER='slave_user',                    # user replicate tạo trên server Master
mysql> SOURCE_PASSWORD='password',                  # password user replicate
mysql> SOURCE_LOG_FILE='mysql-bin.000004’,          # thông số File lưu ở server Master
mysql> SOURCE_LOG_POS=157;                          # thông số Position đã lưu ở Master 

Sau đó chúng ta sẽ dùng lệnh START SLAVE; để bắt đầu sao lưu database

Như ta thấy vậy là server Slave đã replicate được database của server Master