ສ້າງຖານຂໍ້ມູນປາຍທາງກ່ອນ ໃຊ້ engine ດຽວກັນ (PostgreSQL ໄປ PostgreSQL, MySQL ໄປ MySQL, MariaDB ໄປ MariaDB) ແລະ ເວີຊັນບໍ່ເກົ່າກວ່າຕົ້ນທາງ ຂໍ້ມູນແລ່ນຈາກຕົ້ນທາງເຂົ້າຖານຂໍ້ມູນໃໝ່ໂດຍກົງ ການຍ້າຍບໍ່ມີຄ່າໃຊ້ຈ່າຍ ສ່ວນຖານຂໍ້ມູນຄິດຄ່າບໍລິການຕາມປົກກະຕິ
| ວິທີ | ເຮັດວຽກແນວໃດ | ຊ່ວງທີ່ຕ້ອງຢຸດ |
|---|---|---|
| ຍ້າຍແລ້ວຊິງຕໍ່ເນື່ອງ (ແນະນຳ) | ສຳເນົາທັງໝົດ ແລ້ວຕາມການປ່ຽນແປງຂອງຕົ້ນທາງຈົນກວ່າຈະ Cutover | ບໍ່ເທົ່າໃດນາທີຕອນ Cutover |
| ຍ້າຍຄັ້ງດຽວ (Full dump) | ສຳເນົາທັງໝົດຄັ້ງດຽວ | ຢຸດຂຽນຕົ້ນທາງລະຫວ່າງຍ້າຍ |
ເທື່ອລະຂັ້ນ
- ເປີດຖານຂໍ້ມູນປາຍທາງ ໄປທີ່ແທັບ ຍ້າຍຖານຂໍ້ມູນ ແລ້ວກົດ ເລີ່ມຍ້າຍຖານຂໍ້ມູນ
- ເລືອກວິທີ ແລ້ວໃສ່ host, port, user ແລະ ລະຫັດຜ່ານຂອງຕົ້ນທາງ ພ້ອມການເຂົ້າລະຫັດ (ຄ່າເລີ່ມຕົ້ນແມ່ນ TLS)
- ອະນຸຍາດ IP ທີ່ໜ້າຈໍສະແດງໃນ Firewall ຫຼື Security Group ຂອງຕົ້ນທາງ ຖ້າຕ້ອງການ IP ທີ່ບໍ່ປ່ຽນ ໃຫ້ເພີ່ມ NAT Gateway ໃຫ້ Subnet ຂອງຖານຂໍ້ມູນ
- ກົດ ທົດສອບການເຊື່ອມຕໍ່ ແລ້ວເລືອກຖານຂໍ້ມູນທີ່ຈະຍ້າຍ ແຕ່ລະໂຕຈະໃຊ້ຊື່ເດີມ ແລະ ຖານຂໍ້ມູນປາຍທາງຕ້ອງຫວ່າງ
- ກົດ ກວດກ່ອນຍ້າຍ ແລ້ວແກ້ຂໍ້ທີ່ລະບົບແຈ້ງ ໜ້າຈໍບອກນຳວ່າຕົ້ນທາງຕ້ອງຕັ້ງຄ່າຫຍັງ (ເບິ່ງດ້ານລຸ່ມ)
- ກົດ ເລີ່ມຍ້າຍ ໜ້າຈໍສະແດງການສຳເນົາ ແລ້ວຂຶ້ນ ຊິງຕໍ່ເນື່ອງ ພ້ອມບອກວ່າຕາມຫຼັງຕົ້ນທາງເທົ່າໃດ
- ເມື່ອພ້ອມ ຢຸດແອັບບໍ່ໃຫ້ຂຽນລົງຕົ້ນທາງ ກົດ Cutover ລໍຈົນຂຶ້ນ ສຳເລັດແລ້ວ ແລ້ວປ່ຽນແອັບມາໃຊ້ຖານຂໍ້ມູນໃໝ່
ສິ່ງທີ່ຕົ້ນທາງຕ້ອງມີສຳລັບການຊິງຕໍ່ເນື່ອງ
| Engine | ຕ້ອງມີ |
|---|---|
| PostgreSQL | wal_level=logical (ເທິງ Amazon RDS: rds.logical_replication=1) ຜູ້ໃຊ້ທີ່ມີສິດ REPLICATION (RDS: rds_replication) ແລະ ເປັນເຈົ້າຂອງຕາຕະລາງ ຫຼື ມີ publication ທີ່ສ້າງໄວ້ໃຫ້ ແລະ ມີ replication slot ຫວ່າງ ຕາຕະລາງຕ້ອງມີ primary key ຈຶ່ງຈະຊິງການ UPDATE ແລະ DELETE ໄດ້ |
| MySQL / MariaDB | ເປີດ binary log ດ້ວຍ binlog_format=ROW ແລະ ເກັບໄວ້ຢ່າງໜ້ອຍ 1 ວັນ server_id ບໍ່ເປັນ 0 ແລະ ຜູ້ໃຊ້ມີສິດ SELECT, SHOW VIEW, TRIGGER, EVENT, RELOAD, REPLICATION SLAVE ແລະ REPLICATION CLIENT ຕາຕະລາງ MyISAM ບໍ່ໄດ້ສຳເນົາ ນະ ຈຸດເວລາດຽວກັນ |
- ລະຫວ່າງຊິງ ຖານຂໍ້ມູນປາຍທາງ MySQL ຫຼື MariaDB ເປັນແບບອ່ານຢ່າງດຽວສຳລັບແອັບ ສ່ວນ PostgreSQL ຢ່າຂຽນລົງຕາຕະລາງທີ່ກຳລັງຍ້າຍເທິງປາຍທາງ ແລະ ຢ່າແກ້ໂຄງສ້າງຕາຕະລາງທີ່ຕົ້ນທາງ ເພາະ DDL ເຊັ່ນ
ALTER TABLEບໍ່ຖືກຊິງ - ນັບແຖວ ທຽບຈຳນວນແຖວທັງສອງຝັ່ງໄດ້ທຸກເມື່ອ ແລະ ຕອນ Cutover ລະບົບນັບໃຫ້ອີກຄັ້ງ
- ຜູ້ໃຊ້ ແລະ ສິດຂອງຕົ້ນທາງບໍ່ຖືກຍ້າຍ ຂໍ້ມູນທີ່ຍ້າຍເປັນຂອງຜູ້ໃຊ້ຫຼັກຂອງປາຍທາງ ເພີ່ມຜູ້ໃຊ້ອື່ນໄດ້ທີ່ແທັບ ຜູ້ໃຊ້ & ລະຫັດຜ່ານ ພາຍຫຼັງ
- Read replica ເປັນປາຍທາງບໍ່ໄດ້ ໃຫ້ຍ້າຍເຂົ້າຖານຂໍ້ມູນຫຼັກ ແລ້ວ Replica ແລະ ເຄື່ອງສຳຮອງຈະໄດ້ຂໍ້ມູນຕາມໄປເອງ
ຊ້ອມກ່ອນ: ຍ້າຍເຂົ້າຖານຂໍ້ມູນໃນ Project ທົດສອບ ລອງໃຫ້ແອັບເຮັດວຽກເທິງນັ້ນ ແລ້ວຈຶ່ງຍ້າຍຂອງແທ້
ຖ້າພົບບັນຫາ
ທົດສອບການເຊື່ອມຕໍ່ບໍ່ຜ່ານ
ກວດ host ແລະ port ກວດວ່າຕົ້ນທາງອະນຸຍາດ IP ທີ່ໜ້າຈໍສະແດງ ແລະ ກວດການເຂົ້າລະຫັດ ໃຊ້ ບໍ່ເຂົ້າລະຫັດ ສະເພາະເມື່ອຕົ້ນທາງຢູ່ໃນ VPC ດຽວກັນ
Cutover ຢຸດລໍ ເພາະບາງຕາຕະລາງຈຳນວນແຖວບໍ່ກົງ
ຍັງມີຫຍັງຂຽນລົງຕົ້ນທາງຢູ່ ຢຸດທຸກລະບົບທີ່ຂຽນ ແລ້ວກົດ Cutover ອີກຄັ້ງ ຖ້າກວດຕາຕະລາງທີ່ລະບົບແຈ້ງແລ້ວ ກົດ Cutover ເຖິງວ່າຈຳນວນແຖວບໍ່ກົງ ເພື່ອໄປຕໍ່ໄດ້
ຂຶ້ນວ່າ replication ຫາຍໄປຈາກຖານຂໍ້ມູນນີ້
ເກີດໄດ້ຫຼັງຖານຂໍ້ມູນສະຫຼັບໄປເຄື່ອງສຳຮອງ ກົດ ເລີ່ມໃໝ່ ເພື່ອຍ້າຍຕັ້ງແຕ່ຕົ້ນ ຂໍ້ມູນທີ່ຍ້າຍມາແລ້ວຈະຖືກລ້າງກ່ອນ
ລະບົບໃຫ້ລຶບ replication slot ທີ່ຕົ້ນທາງ
ລະບົບລຶບ slot ທີ່ສ້າງໄວ້ບໍ່ສຳເລັດ ໃຫ້ແລ່ນຄຳສັ່ງ pg_drop_replication_slot ທີ່ສະແດງ ບໍ່ດັ່ງນັ້ນຕົ້ນທາງຈະເກັບ WAL ໄວ້ຈົນດິສເຕັມ