NGUYEN XUAN CUONG

http://nxcuong.ued.vn

Cách di chuyển Moodle từ MySQL sang Postgres

Việc di chuyển cơ sở dữ liệu Moodle từ loại này sang loại khác có thể được thực hiện dễ dàng thông qua công cụ chuyển cơ sở dữ liệu. Công cụ này là một tính năng giúp chuyển cơ sở dữ liệu của trang Moodle một cách liền mạch.
Cách di chuyển Moodle từ MySQL sang Postgres
Công cụ chuyển cơ sở dữ liệu có thể được tìm thấy trên trang Moodle của chúng tôi dưới:

Settings > Site administration > Development > Experimental > Database migration

Ngoài ra, chúng ta có thể sử dụng tập lệnh dòng lệnh có tại `admin/tool/dbtransfer/cli/migrate.php`.

Công cụ DBTransfer hoạt động như thế nào

Công cụ dbtransfer sử dụng các định nghĩa lược đồ XMLDB từ Moodle và mọi plugin đã cài đặt. Nó lấy dữ liệu từ cơ sở dữ liệu hiện tại và chuyển nó sang cơ sở dữ liệu mới.

Các vấn đề tiềm ẩn trong quá trình di chuyển
Lược đồ không khớp:
Nếu có các đối tượng (cột, bảng, v.v.) trong cơ sở dữ liệu hiện tại không có trong lược đồ XMLDB hoặc ngược lại, quy trình dbtransfer sẽ không thực thi. Điều này có thể xảy ra nếu Moodle đã được nâng cấp từ các phiên bản cũ hơn hoặc nếu một số plugin chưa được gỡ cài đặt đúng cách. Loại bỏ các đối tượng này trước khi tiếp tục.

Các vấn đề về mã hóa dữ liệu:
Dữ liệu được mã hóa không chính xác trong cơ sở dữ liệu hiện tại có thể khiến quá trình truyền bị lỗi. Xác định và khắc phục mọi dữ liệu có vấn đề trước khi chạy lại công cụ dbtransfer.
 
Thời gian chờ:
Đối với cơ sở dữ liệu lớn, quá trình di chuyển có thể mất một lượng thời gian đáng kể, có khả năng gây ra tình trạng hết thời gian chờ trong cơ sở dữ liệu, PHP hoặc Apache. Để tránh điều này, hãy sử dụng biến thể CLI của công cụ.

Cách sử dụng Công cụ chuyển cơ sở dữ liệu bằng CLI
  • Đặt trang web vào Chế độ bảo trì.
  • Cài đặt thêm php-pgsql (php7.4-pgsql, php8.1-pgsql)
  • Sau đó, tắt cron để tránh ghi bất kỳ cơ sở dữ liệu nào trong quá trình di chuyển.
  • Tiếp theo, chạy tập lệnh di chuyển với các tham số chính xác cho cơ sở dữ liệu mới của bạn:
sudo -u php /usr/bin/php /path/to/moodle/admin/tool/dbtransfer/cli/migrate.php \
--dbtype='pgsql' \
--dbhost='x.x.x.x' \
--dbname='moodleDbName' \
--dbuser='moodleUser' \
--dbpass='***' \
--dbport=5432 \
--prefix='mdl_' \
--dbsocket='/var/run/postgresql'

ví dụ
sudo php /var/www/moodle/admin/tool/dbtransfer/cli/migrate.php --dbtype='pgsql' --dbhost='localhost' --dbname='moodleDbName' --dbuser='moodleUser' --dbpass='***' --dbport=5432 --prefix='mdl_'  --dbsocket='/var/run/postgresql'
  • Sau khi di chuyển, hãy sửa đổi tệp cấu hình Moodle để sử dụng các cài đặt cơ sở dữ liệu mới.
<?php  // Moodle configuration file

unset($CFG);
global $CFG;
$CFG = new stdClass();

$CFG->dbtype    = 'pgsql';
$CFG->dblibrary = 'native';
$CFG->dbhost    = 'localhost';
$CFG->dbname    = 'moodleDbName';
$CFG->dbuser    = 'moodleUser';
$CFG->dbpass    = '***';
$CFG->prefix    = 'mdl_';
$CFG->dboptions = array (
  'dbpersist' => 0,
  'dbport' => '5432',
  'dbsocket' => '',
  'dbcollation' => 'utf8_unicode_ci',
);
  • Tiếp theo, hãy xác minh rằng mọi thứ đều hoạt động chính xác với cơ sở dữ liệu mới.
  • Sau đó, tắt Chế độ bảo trì và bật lại Cron. Chúng tôi có thể đưa trang web trở lại trực tuyến và tiếp tục các công việc định kỳ thường xuyên.
Backup database
PGPASSWORD="yourpassword" pg_dump -U postgres -h localhost mydb > mydb.pgsql

Backup Source Code
# Nen source code
tar -zcvf <path_save_file_backup>/moodle_`date +"%Y-%m-%d"`.tar.gz <path_root_directory_backup>
tar -zcvf /opt/backup/moodle_`date +"%Y-%m-%d"`.tar.gz /var/www/html
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây