มีวิธีใดที่ดีกว่าในการบันทึก MySQL InnoDB ในอนาคต?


16

ฉันมีข้อผิดพลาด InnoDB นี้ใน MySQL 5.0 Mysqld หยุดทำงานหมดจด แต่ฉันจัดการที่จะสูญเสีย ib_logfile0 & ib_logfile1 หลังจากนั้น หลังจากการเริ่มต้นใหม่ทั้งหมด InnoDB ได้ทำ "การกู้คืนความผิดพลาด" แล้ว ฉันผ่านธุรกิจ innodb_force_recovery = 4 ซ่อมแซมตาราง MyISAM ที่แขวนและตอนนี้การจำลองแบบก็พร้อมใช้งานนอกเหนือไปจากนี้ คำมั่นสัญญาใหญ่:

111116 15:49:36  InnoDB: Error: page 393457 log sequence number 111 561,760,232
InnoDB: is in the future! Current system log sequence number 70 3,946,969,851.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html
InnoDB: for more information.

นี่คือเซิร์ฟเวอร์ทาส ข้อผิดพลาดดังกล่าวข้างต้นพ่นหลายร้อย ฉันพบคำตอบนี้: "แทรกและลบ> ข้อมูลมูลค่า 64 GB เพื่อให้หมายเลขลำดับของบันทึกมีขนาดใหญ่เกินจริง"

http://forums.mysql.com/read.php?22,50163,50163#msg-50163

จำนวนเวทมนตร์ 64GB นั้นมาจาก 4GB * 16 ซึ่งต้องใช้ท่อนซุง "หมายเลขหลัก" ของผู้ชายคนนั้นที่ต้องการเพิ่มจาก 0 เป็น 15 เหมืองกำลังจะเพิ่มจาก 70 เป็น 111 = 164 GB ขั้นตอนนี้จะใช้เวลา 5 วัน ฉันจะพยายามเร่งสคริปท์ของฉันต่อไปและวิ่งขนานไปกับมันเพื่อเร่งความเร็ว ในระหว่างนี้ฉันหวังว่าคนอื่นจะได้คำตอบที่ดีกว่า นี่มันโง่


คำตอบหนึ่งที่มีแนวโน้ม: "ถ้าเป็นทาสเซิร์ฟเวอร์ทางออกที่ดีที่สุดคือย้ายฐานข้อมูลออกจากกันและติดตั้งสแนปชอตใหม่จากต้นแบบ" น่าเสียดายที่มีตาราง 20,000 ตารางในฐานข้อมูล 25 แห่งซึ่งรวม MyISAM และ InnoDB ในการผลิตตลอด 24 ชั่วโมงทุกวัน ใช้เวลานานเกินไปในการปิดสิ่งที่ทำและทำซ้ำแบบจำลองใหม่ทั้งหมดก่อนที่จะเริ่มการจำลองแบบอีกครั้ง
IcarusNM

4
ตอนนี้ฉันมีเครื่อง 8 คอร์ที่หัวเข่าในการแข่งขันที่ไม่มีจุดหมายเพื่อสร้างและลบข้อมูล 164 กิกะไบต์ ทางเลือกเดียวที่ฉันได้ยินคือทำทุกสิ่งบนทาสนี้และเริ่มต้นใหม่จากศูนย์ ทั้งหมดเพื่อเปลี่ยนหมายเลขหนึ่งในสองไฟล์อย่างมีประสิทธิภาพ แน่นอนว่ามีวิศวกรของ InnoDB บางคนที่มาพร้อมกับเคล็ดลับสำหรับผู้เชี่ยวชาญ มีใครเคยเปิด ib_logfile0 ใน Emacs พบว่าเลขเวทย์มนตร์เป็นเลขฐานสิบหกและเปลี่ยนมันได้หรือไม่
IcarusNM

นี่เป็นบทความที่ยอดเยี่ยมเกี่ยวกับวิธีทำ Percona เป็นผู้มีอำนาจใน MySQL อย่างแน่นอน percona.com/blog/2013/09/11/…
jbrahy

คำตอบ:


10

นี่เป็นสถานการณ์ที่ค่อนข้างหายาก ฉันหวังว่าจะไม่สิ้นสุดที่นั่นอีกครั้งด้วย InnoDB "หมายเลขลำดับบันทึกในอนาคต!" ความผิดพลาด เนื่องจากรายละเอียดเฉพาะของฉันการสร้าง / กู้คืนข้อมูลเซิร์ฟเวอร์ของฉันจึงเป็นทางเลือกสุดท้าย กลโกงบางอย่างในการช่วยเหลือนั่นเป็นความคิดที่ดี แต่ในที่สุดฉันก็ตัดสินใจที่จะพัฒนาสคริปต์ Perl ของฉันเพื่อเล่นเกมที่โง่เง่านี้และปั่นผ่านกิ๊ก / ชั่วโมงให้ได้มากที่สุด มันเป็นระบบทดสอบความเครียดที่ดี

โปรดจำไว้ว่าเป้าหมายคือการเพิ่มเคาน์เตอร์เดียว ( "หมายเลขลำดับล็อก") ซึ่งจะถูกเก็บไว้ที่ไหนสักแห่งในส่วนหัวของib_logfile0และib_logfile1 นี่คือการปลอมตัว InnoDB ดังนั้นมันจะไม่สนใจเวลาบิดเบี้ยวที่ชัดเจนและดำเนินชีวิตต่อไป แต่ไม่มีใครรู้วิธีแก้ไขหมายเลขนั้น หรือถ้าพวกเขารู้ไม่มีใครพูด

นี่คือผลิตภัณฑ์สุดท้ายของฉัน YMMV แต่การใช้ฟังก์ชัน REPEAT ของ mysql เพื่อสร้างข้อมูลภายในนั้นมีประสิทธิภาพสูง

 #!/usr/bin/perl
 use DBI;
 $table = shift || die;
 $dbh = DBI->connect("DBI:mysql:junk:host=localhost", "user", "pass"); #Edit "junk" (DB name), user, and pass to suit.
 $dbh->do("DROP TABLE IF EXISTS $table");
 $dbh->do("CREATE TABLE $table (str TEXT) ENGINE=INNODB");
 $sth = $dbh->prepare("INSERT INTO $table (str) VALUES (REPEAT(?,1000000))");
 foreach (1..50) {
    $sth->execute('0123456789');   # 10 MB
 }
 $dbh->do("DELETE FROM $table");

สูตรที่แนะนำของฉัน:

  1. สร้างฐานข้อมูล 'ขยะ'
  2. บันทึก Perl สคริปต์ข้างต้นเป็นjunk.pl
  3. รันjunk.pl data1และjunk.pl data2และjunk.pl data3ฯลฯ พร้อมกันทั้งหมดสำหรับคอร์ CPU หลายตัวตามที่เซิร์ฟเวอร์ฐานข้อมูลของคุณมีเพื่อเริ่มต้น while true; do date; junk.pl dataX; doneเปิดเปลือกหอยหลายและห่อแต่ละวิ่งในวงทุบตี:

ดู LSN ของคุณเติบโตบางทีในวงอื่น:

 silly# echo "SHOW INNODB STATUS \G" | mysql -p'xxxxxx' | grep '^Log seq'
 Log sequence number 124 3871092821
 silly# echo "SHOW INNODB STATUS \G" | mysql -p'xxxxxx' | grep '^Log seq'
 Log sequence number 124 4209892586
 silly# echo "SHOW INNODB STATUS \G" | mysql -p'xxxxxx' | grep '^Log seq'
 Log sequence number 125 85212387

ตัวเลขขนาดใหญ่เป็น INT 32 บิตที่ไม่ได้ลงนามซึ่งจะห่อที่ 4GB เพิ่มจำนวนที่น้อยลงทุกครั้ง ในกรณีข้างต้นมันเพิ่งหมุนจาก 124 เป็น 125 เป้าหมายของคุณถูกซ่อนอยู่ในmysqld.logที่ส่ง Googling ให้กับคุณในครั้งแรก เมื่อคุณข้ามเส้นชัยนั่นแหล่ะ! ระเบิดเขา! ปล่อยลูกปา!

แถบด้านข้าง: สิ่งนี้เป็นการค้นพบข้อผิดพลาดที่น่าสนใจใน mysqld 5.0 w / REPEAT: ถ้าคุณไปที่ 20 MB มันจะพลิกตัวนับภายในและหมุนไปที่ ~ 96 KB ไม่มีคำเตือนหรือข้อผิดพลาดใด ๆ ฉันไม่ได้กำลังจะเสียเวลาติดตามว่าลง 10 MB ใช้งานได้ดี หากคุณถึงขีด จำกัด อื่น ๆ ก็อาจบ่น ฉันมีบัฟเฟอร์Innodbหลากหลายเพิ่มขึ้นจากค่าเริ่มต้น ปรุงรส เช่นเคยดู mysqld.log ในหน้าต่างเดียว



ขอบคุณ Jonas; นั่นดูน่าสนใจ. ฉันคิดว่าฉันอาจติดกับวิธีการของฉันข้างต้น เขาแสดงให้เห็นว่าใช้ gdb กับ mysqld ที่รันอยู่ซึ่งฉันอาจไม่เคยเสี่ยง แต่ข้อมูลที่ดีก็เช่นกัน
IcarusNM

ด้วยเหตุผลแปลก ๆ บางอย่างที่ใช้ MariaDB ฉันไม่ได้รับหมายเลขลำดับการบันทึก 'ช่องว่างขนาดเล็กจำนวนมาก' แต่เป็นเพียง 'จำนวนมาก' ดังนั้นวิธีนี้ใช้ไม่ได้ผลสำหรับฉัน แน่นอนบันทึกได้รับการปรับปรุงฉันไม่ทราบว่าเมื่อใดที่จะหยุด!
Gwyneth Llewelyn

5

คุณมีตัวเลือกสาม (3) ตัว:

OPTION 01: ดำเนินการ rsync ของ Master เป็น Slave (Downtime on the Master)

  • ขั้นตอนที่ 01: เรียกใช้reset master;บนต้นแบบ (Zaps Binary Logs)
  • ขั้นตอนที่ 02: service mysql stopกับเจ้านาย
  • ขั้นตอนที่ 03: service mysql stopบนทาส
  • ขั้นตอนที่ 04: rsync / var / lib / mysql จากต้นแบบไปยังทาส
  • ขั้นตอนที่ 05: service mysql startเกี่ยวกับต้นแบบ
  • ขั้นตอนที่ 06: ใช้บันทึกไบนารีแรกบนต้นแบบเป็นบันทึกเพื่อเริ่มการจำลองแบบ ใช้ขนาดไฟล์ของบันทึกนั้นเป็นตำแหน่งเพื่อเริ่มการจำลองแบบ
  • ขั้นตอนที่ 07: service mysql stop --skip-slave-startบนทาส
  • ขั้นตอนที่ 08: รันคำสั่ง CHANGE MASTER TO เพื่อตั้งค่าการจำลองแบบจากบันทึกและตรวจสอบตำแหน่งจากขั้นตอนที่ 06
  • ขั้นตอนที่ 09: เรียกใช้start slave;บนทาสและปล่อยให้การจำลองแบบทัน

ตัวเลือก 02: ดำเนินการ rsync ของ Master เป็น Slave (การหยุดทำงานน้อยที่สุดใน Master)

  • ขั้นตอนที่ 01: เรียกใช้reset master;บนต้นแบบ (Zaps Binary Logs)
  • ขั้นตอนที่ 02: service mysql stopบนทาส
  • ขั้นตอนที่ 03: rsync / var / lib / mysql จากต้นแบบไปยังทาส
  • ขั้นตอนที่ 04: ทำซ้ำขั้นตอนที่ 03 จนกระทั่ง rsyncs ที่ต่อเนื่องกันสองอันใช้เวลาเท่ากัน
  • ขั้นตอนที่ 05: service mysql stopเกี่ยวกับต้นแบบ
  • ขั้นตอนที่ 06: rsync / var / lib / mysql จากต้นแบบไปยังทาส
  • ขั้นตอนที่ 07: service mysql startกับต้นแบบ
  • ขั้นตอนที่ 08: ใช้บันทึกไบนารีแรกบนต้นแบบเป็นบันทึกเพื่อเริ่มการจำลองแบบ ใช้ขนาดไฟล์ของบันทึกนั้นเป็นตำแหน่งเพื่อเริ่มการจำลองแบบ
  • ขั้นตอนที่ 09: service mysql stop --skip-slave-startบนทาส
  • ขั้นตอนที่ 10: รันคำสั่ง CHANGE MASTER TO เพื่อตั้งค่าการจำลองแบบจากบันทึกและตรวจสอบตำแหน่งจากขั้นตอนที่ 08
  • ขั้นตอนที่ 11: เรียกใช้start slave;บนทาสและปล่อยให้การจำลองแบบทัน

ตัวเลือก 03: ใช้ XtraBackup

เครื่องมือซอฟต์แวร์นี้ไม่เพียง แต่จะทำสำเนาของต้นแบบที่ไม่ทำงาน แต่ยังสร้าง ib_logfiles ที่เกี่ยวข้องให้กับคุณ คุณจะต้องตั้งค่าการจำลองแบบ

ฉันโพสต์ไปที่ StackExchange ก่อนหน้านี้ในหัวข้อนี้

ฉันได้ทำสิ่งเหล่านี้หลายครั้งสำหรับ บริษัท ผู้ให้บริการพื้นที่เว็บของฉัน ลูกค้ารายหนึ่งมี 3.7TB เพื่อย้ายและใช้เวลาประมาณ 16 ชั่วโมง 64GB มีขนาดเล็กมากเมื่อเปรียบเทียบ


ในตัวเลือก 02 ขั้นตอนที่ 05 คุณพูดเพื่อเริ่มต้นแบบ มันหยุดเมื่อไหร่? Rsync ในต้นแบบสดเป็นความกล้าหาญ ฉันประทับใจ. และโชคดีที่ฉันใช้ innodb_file_per_table แต่ในที่สุดคุณต้องกัดกระสุนและหยุดต้นแบบให้นานพอที่จะให้ rsync สุดท้ายทำงานก่อนเริ่มการจำลองแบบ นั่นเป็นไปได้ที่ฉันจะใช้วิธีนี้ แต่นี่เป็น DBMS ที่ใช้งานได้ดีมาก และฉันจะดู XtraBackup สำหรับข้อมูลของฉัน
IcarusNM

@IcarusNM: อ่าพิมพ์ผิด ฉันแก้ไขมัน ขอขอบคุณ !!!
RolandoMySQLDBA

ตัวเลือก 02 อาจยังใช้งานได้อยู่บ้าง เช่นคุณควรทำขั้นตอนที่ 2 ก่อนขั้นตอนที่ 1 คุณอาจต้องการให้ RESET SLAVE อยู่ในนั้น พิมพ์ผิดในขั้นตอนที่ 4 และคุณพูดว่า "บันทึกไบนารีแรก" ในขั้นตอนที่ 5 แต่คุณหมายถึงบันทึกไบนารี "เฉพาะ" หรือ "สุดท้าย" จริงๆ และคุณควรใช้ mysqlbinlog เพื่อยืนยันตำแหน่งบันทึกไม่ใช่ขนาดไฟล์ และทั้งหมดนี้ก็ยังใช้งานไม่ได้จนกว่าคุณจะหยุดอาจารย์ในบางจุด การกำหนดตำแหน่งบันทึก / เวลาเมื่อ rsync เสร็จสิ้นมีความเสี่ยงที่ดีที่สุด
IcarusNM

ฉันเลือก OPTION 2 ตลอด 4 ปีที่ผ่านมากับลูกค้า DB Hosting ที่มีข้อมูลในช่วง TeraByte มันทำงานได้ทุกครั้งกับเซิร์ฟเวอร์ที่ใช้งานอยู่ ความผิดพลาดที่แท้จริงเพียงข้อเดียวที่คุณสามารถทำได้คือทาส ความผิดพลาดนั้นจะเกิดขึ้นในการตั้งค่าการจำลองแบบถูกต้องหรือไม่ นอกจากนี้RESET SLAVEยังมีประโยชน์โดยเฉพาะอย่างยิ่งหากคุณมีบันทึกการถ่ายทอดจำนวนมากหลาย GB หลังจากกระบวนการ rsync และสร้างการจำลองแบบขึ้นใหม่โปรดจำไว้ว่าคำสั่ง CHANGE MASTER TO นั้นจะล้างข้อมูลบันทึกการถ่ายทอดออกไปให้คุณเช่นกัน
RolandoMySQLDBA

mmm ... แปลก ฉันตั้งค่าทาสของฉันโดยใช้ xtrabackup (เช่นเคย) และยังคงมีข้อผิดพลาดบันทึก (percona mysql 5.5.x) ... ดูเหมือนว่ามีบางอย่างผิดปกติในทาสนี้และฉันต้องทำอีกครั้ง
แฮรัลด์

2

ฉันพบว่าอาจเป็นวิธีที่ดีกว่าในการแก้ปัญหานี้ในตารางที่แบ่งพาร์ติชัน ฉันต้องทิ้งพาร์ติชั่นเมื่อหลายปีก่อนและต้องเพิ่มพาร์ติชั่นใหม่สำหรับปี 2014 เกือบทุกพาร์ติชันรายงานข้อผิดพลาดนี้ดังนั้นก็เช่นกัน ความผิดพลาดที่น่ารังเกียจมาก

ดังนั้นในขณะที่ DROPPING เก่าและใช้ REORGANIZE ของพาร์ติชัน MAXVALUE (อันสุดท้าย) มันจะสร้างไฟล์ใหม่ที่โอเคฉันเลยได้รับคำเตือนน้อยลง ในเวลานั้นช่วยเพิ่มตัวนับลำดับการบันทึกดังนั้นฉันไม่จำเป็นต้องแทรกข้อมูลปลอม ฉันมีสิ่งนี้เกิดขึ้นบนเซิร์ฟเวอร์หลัก btw ...

ดังนั้นนี่คือ:

ALTER TABLE Events DROP PARTITION p1530 , p1535 , p1540 , p1545 , 
p1550, p1555 , p1560 , p1565 , p1570 , p1575 , p1580 , p1585 , p1590 , 
p1595 , p1600 , p1605 , p1610 , p1615 , p1620 , p1625 , p1630 , p1635 , 
p1640 , p1645 , p1650 , p1655 , p1660 , p1665 , p1670 , p1675 , p1680 , 
p1685 , p1690 , p1695 , p1700 , p1705 , p1710 , p1715 , p1720 , p1725 , 
p1730 , p1735 , p1740 , p1745 , p1750 , p1755 , p1760 , p1765 , p1770 , 
p1775 , p1780 , p1785 , p1790 , p1795 , p1800 , p1805 , p1810 , p1815 , 
p1820 , p1825 , p1830 , p1835 , p1840;

และนี่:

ALTER table Events REORGANIZE PARTITION p3000 INTO (
PARTITION p3500 VALUES LESS THAN (TO_DAYS('2013-01-01')),
PARTITION p3510 VALUES LESS THAN (TO_DAYS('2013-01-04')),
PARTITION p3520 VALUES LESS THAN (TO_DAYS('2013-01-07')),
PARTITION p3530 VALUES LESS THAN (TO_DAYS('2013-01-10'))
...
PARTITION p4740 VALUES LESS THAN (TO_DAYS('2014-01-08')),
PARTITION p9000 VALUES LESS THAN MAXVALUE)

ที่จะวางแต่ละพาร์ติชันในการเปลี่ยนแปลงได้อย่างมีประสิทธิภาพและสร้างใหม่ด้วยสำเนาชั่วคราวของเนื้อหาของสิ่งที่อยู่ในนั้น คุณสามารถทำสิ่งนี้ได้ต่อตารางหากคุณต้องการแอปพลิเคชันของฉันอนุญาตให้เกิดขึ้นดังนั้นไม่จำเป็นต้องกังวลเกี่ยวกับการสำรองข้อมูลที่ซิงค์เป็นต้น

ตอนนี้สำหรับส่วนที่เหลือของตารางตั้งแต่ฉันไม่ได้สัมผัสพาร์ทิชันทั้งหมดในกระบวนการบางส่วนจะถูกทิ้งให้อยู่กับคำเตือนลำดับล็อกสำหรับคนเหล่านั้นที่จะเสียแต่และครอบคลุมโดยการดำเนินการจัดระเบียบนี้ฉันอาจจะทำงานนี้:

ALTER TABLE Events REBUILD PARTITION p0, p1;

หรือว่า

ALTER TABLE Events OPTIMIZE PARTITION p0, p1;

ดังนั้นฉันจึงคิดว่าคุณสามารถทำสิ่งนี้กับตารางวานิลลาธรรมดาเพิ่มพาร์ทิชันชั่วคราวโดยแฮชและเอาออกในภายหลัง (หรือเก็บพวกเขาฉันสามารถแนะนำพาร์ทิชัน)

ฉันใช้ mariadb แต่ไม่ใช่ mysql (ดังนั้น XtraDB)

บางทีนี่อาจช่วยใครซักคน ฉันยังคงใช้งานได้ดีมาก การเปลี่ยน ENGINE ดูเหมือนว่าจะทำงานได้ดีดังนั้นฉันจึงนำมันกลับ / มาระหว่าง MyIsam กับพวกเขากลับไปที่ InnoDB

มันค่อนข้างสมเหตุสมผลถ้าคุณเปลี่ยน ENGINE ตารางจะหายไปจาก innodb ดังนั้นมันจะไม่เป็นปัญหาอีกต่อไป

ALTER TABLE Events ENGINE=MyISAM;
ALTER TABLE Events ENGINE=InnoDB;

ดูเหมือนว่าจะทำงานที่นี่ ฉันสามารถยืนยันบางสิ่งในตารางที่แบ่งพาร์ติชัน:

  • ALTER TABLE xyz ENGINE = InnoDB ช้ามากไปยัง Aria (mariadb) เร็วเป็นสองเท่า แต่โดยทั่วไปแล้ววิธีที่ช้าในการเพิ่มเคาน์เตอร์ลำดับบันทึก
  • แก้ไขตาราง xyz สร้างพาร์ทิชันทั้งหมดเป็นวิธีที่เร็วที่สุดในการ 'แก้ไข' ตารางและช่วยเพิ่มเคาน์เตอร์
  • แก้ไขตาราง xyz วิเคราะห์พาร์ทิชันทั้งหมดช้าในการเปรียบเทียบกับอดีตและไม่ได้เขียนพาร์ทิชันที่ตรวจสอบว่าจะตกลง REBUILD ยืนยันการเขียนลงใน schema ของตารางชั่วคราว

ฉันใช้อันสุดท้ายกับหลาย ๆ โต๊ะ คำเตือนเกิดขึ้นเมื่อพยายามเปิดไฟล์และมีหนึ่งคำจำกัดความสำหรับทุกพาร์ติชันที่เปิดขึ้นพร้อมกับปัญหาการนับ เกือบจะกลิ้งผ่านเคาน์เตอร์วันนี้สำหรับตารางสุดท้าย ฉันคิดว่าเมื่อทุกอย่างถูกประมวลผลแล้วจะต้องล้างบันทึกไบนารี

ปรับปรุง : ฉันสามารถสรุปบางสิ่งตอนนี้ฉันจัดการเพื่อเรียงลำดับปัญหานี้ออก

  • ความผิดพลาดของฉันเกิดจากการจัดระเบียบพาร์ติชันใหม่บนตารางในรูปแบบ Aria (MariaDB)
  • (สำหรับฉัน) การสร้างพาร์ติชั่นใหม่นั้นทำได้ดีที่สุดและเร็วที่สุดเพื่อให้ตัวนับลำดับขึ้นมา การเปลี่ยนเครื่องยนต์ช้าและคุณต้องทำสองครั้งเพื่อส่งผลกระทบต่อ Innodb การเปลี่ยนเป็น innoDB ค่อนข้างช้าเมื่อเทียบกับ MyIsam หรือ Aria
  • ฉันอัปเกรดเป็น MariaDB 5.3 และไม่ใช่ 5.5 (เดิมคือ 5.2) และใช้งานได้ดี ฉันคิดว่ามีปัญหามากเกินไปกับอาเรียพาร์ติชั่น 5.5 (และบั๊กที่ยืนยัน) เพื่อใช้ชุดค่าผสมนั้น
  • ควรมีวิธีที่ดีกว่าในการรีเซ็ตตัวนับลำดับการบันทึก

ภายใต้ MariaDB คุณสามารถแก้ไขตารางทั้งหมดได้อย่างรวดเร็วโดยใช้USE INFORMATION_SCHEMA; SELECT CONCAT("ALTER TABLE `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` REBUILD PARTITION ALL;") AS MySQLCMD AS MySQLCMD FROM TABLES;(แหล่งที่มา: dba.stackexchange.com/questions/35073/… ) แล้วแปลงเป็นไฟล์ที่จะเรียกใช้เป็นชุดคำสั่ง
Gwyneth Llewelyn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.