VIG Sync releasesself-updates
Đồng bộ database + code giữa production và staging: pull (làm mới staging) và push pipeline (deploy lên prod, có pre-check/backup/post-check/auto-rollback). Built by VIG Digital.
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/vigdigital/vig-sync/releases/download/v0.7.3/vig-sync.zipShips its own WordPress updater (Plugin Update Checker), so new versions show up under Dashboard → Updates.
Đồng bộ database giữa production và staging theo nhóm dữ liệu, có dry-run và backup tự động — công cụ nội bộ của VIG Digital.
Đây là công cụ dev/ops (cần cấu hình wp-config), không phải plugin "cài là chạy" cho người dùng cuối.
v1 làm được gì
- Pull production → staging: kéo dữ liệu thật từ prod về staging để test.
- Chọn theo 3 nhóm thô thay vì 200 table:
- Users & phân quyền (users + usermeta, tự sửa prefix-key)
- Nội dung (bài viết, trang, sản phẩm, đơn hàng, ảnh, menu, danh mục, bình luận — gồm cả WooCommerce)
- Settings (một số tuỳ chọn an toàn, không đụng URL/plugin/theme)
- Dry-run: xem trước số dòng sẽ thay đổi, chưa ghi gì.
- Backup bắt buộc các bảng đích trước khi ghi (
.sql.gzngoài webroot, tự xoay vòng) + khôi phục 1 chạm. - Tự đổi URL (serialized-safe, 2-pass cho Elementor) và sửa prefix-key sau khi copy.
Yêu cầu môi trường
- prod & staging cùng một MySQL server (cùng hosting/cPanel), 2 database riêng.
- Chỉ cần PHP
mysqli(không cần SSH/WP-CLI/shell — hợp hosting CageFS). - Cài plugin ở site staging.
Cài đặt
- Tải zip từ Releases → Plugins → Add New → Upload → Activate (ở site staging).
- Thêm cấu hình vào
wp-config.phpcủa staging (trỏ sang DB production):
define( 'VIG_SYNC_ROLE', 'staging' ); // vai trò site này (bắt buộc = staging ở v1)
define( 'VIG_SYNC_PEER_DB_HOST', 'localhost' ); // hoặc 'host:port' / 'host:/path/mysqld.sock'
define( 'VIG_SYNC_PEER_DB_NAME', 'prod_db_name' );
define( 'VIG_SYNC_PEER_DB_USER', 'prod_db_user' );
define( 'VIG_SYNC_PEER_DB_PASS', 'prod_db_pass' );
define( 'VIG_SYNC_PEER_URL', 'https://prod-domain.com' );
// tuỳ chọn:
// define( 'VIG_SYNC_PEER_PREFIX', 'wp_' ); // nếu không đặt sẽ tự dò
// define( 'VIG_SYNC_BACKUP_DIR', '/home/acc/vig-sync-backups' ); // mặc định: cạnh wp-content
- Vào VIG Toolkit → Sync → tab Chạy đồng bộ. Kết nối "✓" là sẵn sàng.
Quy trình an toàn
- Xem trước (Dry-run) để đối chiếu số dòng prod vs staging.
- Bấm Chạy → plugin tự backup bảng đích, copy trong transaction, rồi fixup URL + prefix-key.
- Nếu sai → tab Nhật ký có nút Khôi phục từ backup.
- Nếu dùng Elementor: chạy Elementor → Tools → Regenerate CSS & Data (plugin sẽ nhắc).
⚠️ Chạy thật ghi đè dữ liệu staging bằng dữ liệu production. Dữ liệu chỉ có ở staging sẽ mất — đúng ý khi "làm mới staging". Nút Chạy bị khoá nếu
VIG_SYNC_ROLE ≠ staging.
Push staging → production (v0.2) — cài trên production
Chiều ngược lại: đẩy code (theme + plugin) và (tuỳ chọn) DB từ staging lên prod, qua pipeline có rào an toàn. Cài plugin trên production, thêm wp-config:
define( 'VIG_SYNC_ROLE', 'prod' );
define( 'VIG_SYNC_ALLOW_PUSH', true );
define( 'VIG_SYNC_PEER_PATH', '/home/acc/staging.domain.com' ); // docroot staging (đọc file)
// + VIG_SYNC_PEER_DB_* trỏ sang DB staging (nếu push cả DB)
Tab Push → quy trình 5 bước tự động:
- Pre-check — liệt kê file/plugin/DB sẽ đổi (chưa ghi gì).
- Backup DB + file hiện tại của prod (ngoài webroot).
- Push — copy file thay đổi (+ active_plugins / DB nếu chọn).
- Post-check — HTTP kiểm tra site còn sống, không lỗi.
- Auto-rollback — nếu post-check fail thì tự khôi phục DB + file về trạng thái trước.
⚠️ Mặc định push chỉ CODE. Push DB ghi đè data live của prod (đơn hàng/user mới) → tách riêng, cảnh báo đỏ, phải tick + gõ
PUSH-PRODxác nhận. Xoá file thừa & đồng bộ active_plugins là tuỳ chọn (mặc định tắt).
Chạy headless / định kỳ (v0.3)
WP-CLI:
wp vig-sync status
wp vig-sync pull --groups=users,content --yes
wp vig-sync push --dry-run # pre-check (mặc định chỉ code)
wp vig-sync push --code --yes
wp vig-sync restore --id=<backup>
REST (cho cron ngoài như cron-job.org / VPS trigger, không cần mở máy):
define( 'VIG_SYNC_REST_TOKEN', 'chuoi-bi-mat-dai' ); // bắt buộc để bật REST
// define( 'VIG_SYNC_ALLOW_REMOTE_PUSH', true ); // nếu muốn push qua REST
curl -X POST "https://staging.domain.com/wp-json/vig-sync/v1/run" \
-H "X-VIG-Sync-Token: chuoi-bi-mat-dai" -H "Content-Type: application/json" \
-d '{"direction":"pull","groups":["users","content"]}'
Lịch (wp-cron): tab Lịch → thêm job (chiều + nhóm + tần suất). Pull tự chạy; push định kỳ cần define( 'VIG_SYNC_ALLOW_SCHEDULED_PUSH', true ). Vì wp-cron chỉ chạy khi có traffic, nên ghép cron ngoài gọi wp-cron.php hoặc REST /run.
Chưa có (roadmap)
- Tách riêng WooCommerce / theo post_type (scoped-row).
- Đồng bộ media (uploads đang symlink chung nên chưa cần).
- Transport REST cross-server (khi prod & staging khác hosting).
Dành cho developer / maintainer
📚 Về sau, tài liệu kỹ thuật đầy đủ sẽ chuyển lên vigdigital.com — khi đó mục này rút gọn thành một liên kết.
Kiến trúc: includes/Sync_Engine.php điều phối plan()/execute(); transport includes/Transport/DB_Transport.php (2 mysqli, đọc-source/ghi-target, chunked); Backup.php (gzip dump ngoài webroot + rotation + restore); Search_Replace.php (serialized-safe) + Fixups.php (prefix-key + URL 2-pass); Presets.php (nhóm thô). UI dưới includes/Admin/.
Tự cập nhật: PUC v5.7 đọc GitHub Releases (vig_setup_updates). Repo private → cấu hình theo VIG internal ops notes.
Phát hành: bump Version: trong vig-sync.php → commit → git tag v0.1.1 && git push origin v0.1.1. GitHub Action tự build zip sạch + đính vào Release.
Rủi ro đã biết (v1): copy nguyên-bảng dùng OFFSET pagination + INSERT theo chunk trong 1 request → table rất lớn có thể chạm timeout; giảm chunk_size trong Settings. Restore đọc dump theo dòng (mỗi statement 1 dòng).
GPL-2.0-or-later © VIG Digital
Releases
13 releases. Each count is every asset in that release; expand a row for the breakdown.