Monday, January 27, 2014
คำสั่ง Javascript เปิดหน้าต่างใหม่
ondblclick="var myWindow = window.open('{URL}','_New','toolbar=yes, location=yes, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=yes, copyhistory=yes, fullscreen=no');myWindow.moveTo(0, 0);myWindow.resizeTo(screen.width, screen.height);myWindow.focus();"
Tuesday, January 21, 2014
How To: Reset Identity column in SQL Server
The following line resets the Identity value for the Customer table to 0 so that the next record added starts at 1.
DBCC CHECKIDENT('Customer', RESEED, 0)
For MySql
For MySql
ALTER TABLE tablename AUTO_INCREMENT = 1
Wednesday, January 1, 2014
How to convert all MyISAM tables to InnoDB in a MySQL Database
วิธีการเปลี่ยน storage engine จาก MyISAM เป็น InnoDB ทีละหลายๆ table สามารถทำได้โดยรันคำสั่ง SELECT CONCAT… เพื่อสร้างคำสั่งในการ convert storage engine จาก MyISAM เป็น InnoDB และเราก็นำผลลัพธ์จากคำสั่งนี้ไปรันต่อที่ MySQL console เพื่อแก้ไข storage engine ได้โดยไม่ต้องพิมพ์ให้เมื่อยและยังครบถ้วนทุก table ที่ต้องการ convert แน่นอน
วิธีที่ #1 – เปลี่ยน storage engine จาก MyISAM เป็น InnoDB
วิธีการนี้เป็นการรันคำสั่งบน MySQL console และ copy ผลลัพธ์ที่ได้มารันทีละคำสั่ง เพื่อที่จะได้รู้ว่ามี table ไหนบ้างที่ไม่สามารถ convert ไปได้และมี error เป็นอย่างไร
วิธีที่ #1 – เปลี่ยน storage engine จาก MyISAM เป็น InnoDB
วิธีการนี้เป็นการรันคำสั่งบน MySQL console และ copy ผลลัพธ์ที่ได้มารันทีละคำสั่ง เพื่อที่จะได้รู้ว่ามี table ไหนบ้างที่ไม่สามารถ convert ไปได้และมี error เป็นอย่างไร
คำสั่งที่ใช้แสดง คำสั่งในการแก้ไข storage engine
1
2
3
|
SELECT CONCAT('ALTER TABLE `',table_schema,'`.`',table_name,'` engine=InnoDB;') FROM information_schema.tables WHERE engine = 'MyISAM';
|
ผลลัพธ์
[text]
+————————————————————————–+
| CONCAT(‘ALTER TABLE
+————————————————————————–+
| ALTER TABLE
| ALTER TABLE
| ALTER TABLE
…
| ALTER TABLE
| ALTER TABLE
| ALTER TABLE
…
| ALTER TABLE
| ALTER TABLE
| ALTER TABLE
| ALTER TABLE
| ALTER TABLE
| ALTER TABLE
+————————————————————————–+
31 rows in set, 1 warning (0.04 sec)
[/text]
+————————————————————————–+
| CONCAT(‘ALTER TABLE
',table_schema,'.',table_name,' engine=InnoDB;’) |+————————————————————————–+
| ALTER TABLE
information_schema.COLUMNS engine=InnoDB; || ALTER TABLE
information_schema.EVENTS engine=InnoDB; || ALTER TABLE
information_schema.PARAMETERS engine=InnoDB; |…
| ALTER TABLE
mysql.time_zone_transition engine=InnoDB; || ALTER TABLE
mysql.time_zone_transition_type engine=InnoDB; || ALTER TABLE
mysql.user engine=InnoDB; |…
| ALTER TABLE
DB1.table1 engine=InnoDB; || ALTER TABLE
DB1.table2 engine=InnoDB; || ALTER TABLE
DB1.table3 engine=InnoDB; || ALTER TABLE
DB1.table4 engine=InnoDB; || ALTER TABLE
DB1.table5 engine=InnoDB; || ALTER TABLE
DB1.table6 engine=InnoDB; |+————————————————————————–+
31 rows in set, 1 warning (0.04 sec)
[/text]
หลังจากที่รันคำสั่งแล้วจะได้คำสั่งในการเปลี่ยน storage engine สำหรับ Database ทั้งหมด ให้เราเลือกทุก database ยกเว้น mysql และ information_schema เพราะทั้ง 2 database นี้ไม่รองรับ InnoDB storage engine และรันคำสั่งทั้งหมดใน MySQL console
วิธีที่ #2 – เปลี่ยน storage engine จาก MyISAM เป็น InnoDB
วิธีการนี้เป็นการรันคำสั่งบน MySQL console และเก็บผลลัพธ์เป็น text ไฟล์และใช้คำสั่ง source บน MySQL console เพื่อรันคำสั่งทั้งหมด
วิธีการนี้เป็นการรันคำสั่งบน MySQL console และเก็บผลลัพธ์เป็น text ไฟล์และใช้คำสั่ง source บน MySQL console เพื่อรันคำสั่งทั้งหมด
1
2
3
|
SELECT CONCAT('ALTER TABLE `',table_schema,'`.`',table_name,'` engine=InnoDB;') FROM information_schema.tables WHERE engine = 'MyISAM' into outfile '/tmp/MyISAM2InnoDB.txt';
|
หลังจากที่รันคำสั่งข้างบนแล้วจะได้ไฟล์ MyISAM2InnoDB.txt ที่ข้างในมีคำสั่ง alter table อยู่ ให้ลบ คำสั่งที่เกี่ยวข้องกับ mysql และ information_schema database ออก จากนั้นให้เข้า mysql console และรันคำสั่งด้านล่าง เพื่อเปลี่ยน storage engine จาก MyISAM เป็น InnoDB
1
2
3
|
source /tmp/MyISAM2InnoDB.txt;
|
เช็คเว็บอืด
กรณีแบบนี้ ต้องตรวจที่ mysql process ก่อน วิธีง่ายๆ ก็คือ ไปที่ phpMyAdmin เข้าด้วย user root หรือ da_admin (ถ้าเป็น directadmin)
สามารถเข้าดูได้จาก login เข้า ssh หรือ putty
จากนั้นก็ใช้คำสัง cat อ่านค่าของ password user
ถ้าเป็น User: da_admin pass: ดูในไฟล์
ได้จาก
โดยหลักๆจะอยู่ตาม path นี้ครับ
กดดูตรงเมนู Status นะครับ มันจะบอกเราว่า มี db ไหน query อะไร กำลังทำงานอยู่บ้าง และ ใช้เวลาไปแล้วเท่าไหร่ อันไหนที่ใช้เวลาไปนานๆ (เป็น 100 วินาที)
ก็ กด kill ทิ้งไปเลยครับ
จากการดู processlist จะทำให้ช่วยวิเคราะ์ห์ได้ว่า ระบบกำลังทำงานอะไร และหนักระบบแค่ไหน เอาไปช่วยประเมินได้ครับ มีหลายปัญหาเลย ผมไม่สามารถเล่าไ้ด้หมด
ถ้าจะดู realtime แบบไม่ต้อง refresh บ่อยๆ ก็เข้าทาง putty
แล้วพิมพ์ว่า
#watch mysqladmin -u USER -pPASSWORD processlist [ENTER]
เปลี่ยนค่า USER เป็น root หรือ da_admin และ PASSWORD เป็นรหัสผ่านของ user นั้นครับ
เราออกจาก watch ได้โดยการกด Ctrl-C
คำสั่ง watch จะทำการ auto refresh ให้ทุกๆ 1 วินาทีครับ และสามารถใช้ watch คู่กับ คำสั่งอะไรก็ได้ แนะนำให้หาอ่าน help เพิ่มเติมใน google มีเยอะ
ส่วนเรื่องโดนยิงหรือเปล่า ผมไม่ฟันธงนะ เพราะอาจจะไม่ใช่ก้ได้ครับ
สามารถเข้าดูได้จาก login เข้า ssh หรือ putty
จากนั้นก็ใช้คำสัง cat อ่านค่าของ password user
ถ้าเป็น User: da_admin pass: ดูในไฟล์
ได้จาก
โค๊ด: [Select]
cat /usr/local/directadmin/conf/mysql.confหรือถ้าเป็น User: root pass: ดูในไฟล์
โค๊ด: [Select]
cat /usr/local/directadmin/scripts/setup.txtโดยหลักๆจะอยู่ตาม path นี้ครับ
กดดูตรงเมนู Status นะครับ มันจะบอกเราว่า มี db ไหน query อะไร กำลังทำงานอยู่บ้าง และ ใช้เวลาไปแล้วเท่าไหร่ อันไหนที่ใช้เวลาไปนานๆ (เป็น 100 วินาที)
ก็ กด kill ทิ้งไปเลยครับ
จากการดู processlist จะทำให้ช่วยวิเคราะ์ห์ได้ว่า ระบบกำลังทำงานอะไร และหนักระบบแค่ไหน เอาไปช่วยประเมินได้ครับ มีหลายปัญหาเลย ผมไม่สามารถเล่าไ้ด้หมด
ถ้าจะดู realtime แบบไม่ต้อง refresh บ่อยๆ ก็เข้าทาง putty
แล้วพิมพ์ว่า
#watch mysqladmin -u USER -pPASSWORD processlist [ENTER]
เปลี่ยนค่า USER เป็น root หรือ da_admin และ PASSWORD เป็นรหัสผ่านของ user นั้นครับ
เราออกจาก watch ได้โดยการกด Ctrl-C
คำสั่ง watch จะทำการ auto refresh ให้ทุกๆ 1 วินาทีครับ และสามารถใช้ watch คู่กับ คำสั่งอะไรก็ได้ แนะนำให้หาอ่าน help เพิ่มเติมใน google มีเยอะ
ส่วนเรื่องโดนยิงหรือเปล่า ผมไม่ฟันธงนะ เพราะอาจจะไม่ใช่ก้ได้ครับ
Subscribe to:
Comments (Atom)