ใช้คำสั่ง screen ใน linux อย่างไร? by heha
Apr0
screen คือคำสั่งในการรัน command linux ต่างๆ แบบเปิดทิ้งไว้ แม้เน็ตจะหลุด คอมจะพัง เราก็ยังสามารถ remote มาเปิด session เดิมได้โดยที่มันไม่หายไปดื้อๆ เหมาะอย่างยิ่งสำหรับคนเน็ตไม่เสถียร มีวิธีใช้งานดังนี้ เช่น
screen mysqldump -uroot -pxxx > backup.sql
วิธีการใช้การก็เพียงแค่พิมพ์คำว่า screen นำหน้าคำสั่งที่เราต้องการ เช่น mysqldump เรารู้ว่ามันนานมาก เลยสั่ง screen ไว้ หากกด CTRL+A คำสั่งเริ่มต้นก่อนจะป้อนคำสั่งอื่นๆ ของ screen ไม่อย่างนั้นจะยังเป็นการสั่งไปยัง process ที่ทำงานภายใน screen ไม่ใช่ตัว screen เช่นเดิม แล้วจะมีคำสั่งต่อดังนี้
- d – ออกจากคำสั่ง screen โดยจะเข้าไปดูต่อวันหลังได้
- [ - เข้าสู่ copy mode ตรงนี้เมื่อเข้าแล้วจะมีคำสั่งดังต่อไปนี้ (ส่วนใหญ่แทบจะลอกจาก vi มาทั้งดุ้น)
- u - ออกจาก copy mode
- h - ขยับ cursor ไปทางซ้าย
- j - ขยับ cursor ลงข้างล่าง
- k - ขยับ cursor ขึ้น
- l - ขยับ cursor ลง
- G - ขยับ cursor ไปที่ line ที่กำหนด
- CTRL+u - เลื่อนขึ้นครึ่งหน้า
- CTRL+d - เลื่อนลงครึ่งหน้า
- CTRL+b - เลื่อนขึ้นหนึ่งหน้า
- CTRL+f - เลื่อนลงหนึ่งหน้า
- / - search จาก cursor ลงไปข้างล่าง (กด n เพื่อ search next)
- ? - search จาก cursor ขึ้นข้างบน (กด n เพื่อ search next)
และหากกด d เพื่อออกจากคำสั่ง screen ไปแล้ว หรือเน็ตหลุดระหว่าง run screen เราสามารถพิมพ์ "screen -r" เพื่อกลับไปยัง session เดิมที่รันไว้ หรือหากมีหลาย session จะมีข้อความแสดงเช่นดังนี้
There are several suitable screens on:
24146.pts-5.node1 (04/30/13 23:48:40) (Detached)
23909.pts-5.node1 (04/30/13 23:33:22) (Detached)
23817.pts-5.node1 (04/30/13 23:27:58) (Detached)
23647.pts-0.node1 (04/30/13 23:21:36) (Attached)
Type "screen [-d] -r [pid.]tty.host” to resume one of them.
เราอยากเข้าอันไหนก็พิมพ์ตามที่เค้าบอก เช่น "screen -r 23817.pts-5.node1" ก็จะกลับ session ที่ต้องการได้ ไม่เลวเลยใช่ไหมครับ
MongoDB Cheat list และขั้นตอนการทำ Replication by heha
Feb0
สรุปคำสั่ง mongoDB ที่ใช้บ่อยๆ
- use db1 – ใช้งาน database db1 หรือสร้าง database ใหม่
- show dbs – แสดงรายชื่อ database ทั้งหมด
- db.getCollectionNames() – แสดง collection (ตาราง) ทั้งหมด
- db.createCollection(“users”) – สร้าง collection ชื่อ users
- db.users.drop() – ลบ collection users
- db.createCollection(“new”, {capped:true, size:1073741824}); – สร้าง capped collection ขนาด 1073741824 bytes
- db.logMoney.find({time:{$gte: new Date(2013,2,5)}}); – query date มากกว่าเท่ากับวันที่ๆ กำหนด
- db.logMoney.ensureIndex({‘time’:1},{background:true}) – new index field time โดย background ไว้สั่งให้ทำโดยไม่ lock collection
- db.logMoney.getIndexes() - ดู Index ทั้งหมดขณะนั้น
- db.logMoney.find({time:{$gt:new Date()}}) – query ระบุเวลา สามารถใช้ร่วมกับ mongodump ได้
- db.logMoney.aggregate({$match:{time:{$gt:new Date(2013,1,1)},chng:{$lt:0}}},{$group:{_id:{usrId:1, }, count:{$sum:1}, sumAll:{$sum:”$chng”}}}) – ตัวอย่างการใช้งาน query ลักษณะเดียวกับ GROUP BY ใน MySQL
(SELECT *, COUNT(*) as count, SUM(chng) as sumAll FROM logMoney WHERE time > “2013-01-01″ AND chng < 0 GROUP BY usrId)
วิธีทำ Replication
ก่อนอื่น MongoDB แนะนำว่าควรมีเครื่องในวงอย่างน้อย 3 เครื่องครับ (แต่เราอาจจะใช้ 2 เครื่อง แล้วใช้อีกเครื่องเป็น Arbiter หรือตัวหลอกแทนได้) ขั้นตอนมีดังนี้
- Edit /etc/mongodb.conf ด้วยโปรแกรมที่ถนัด
- กำหนด replSet = <ชื่อกลุ่มที่ต้องการ> ในที่นี้ผมตั้งว่า rs0
- restart mongodb
- ทำข้อ 1-3 ใหม่กับเครื่องที่จะเป็น Slave ทุกเครื่อง
- เข้าเครื่องที่จะให้เป็น Master (สมมติว่า ip ภายในของเครื่อง master คือ 10.0.0.1) แล้วพิมพ์ mongo 10.0.0.1 (สำคัญมาก ห้ามลืมพิมพ์ ip หรือพิมพ์ผิดเด็ดขาด ไม่อย่างนั้นจะใช้ไม่ได้)
- ถ้าหน้าจอปรากฏดังนี้แสดงว่าทำได้ถูกต้อง
mongo 10.0.0.1
MongoDB shell version: 2.2.2
connecting to: 10.0.0.1/test
rs0:PRIMARY> - สั่ง rs.initiate()
- สั่ง rs.add(“10.0.0.2″) (สมมติเครื่อง slave ip 10.0.0.2) และเครื่อง slave เครื่องอื่นๆ
- เสร็จ!
สรุปคำสั่ง replication ที่ใช้บ่อย
- rs.initiate() – เริ่ม replica set
- rs.status() – status replica set
- rs.add(“ip”) – เพิ่ม secondary node
- rs.addArb(“ip”) – เพิ่ม secondary node แบบตัวหลอกเพื่อโหวตตอน fail-over เท่านั้น ไม่มีข้อมูลจริง
- rs.stepDown() – ถอนตัวจากการเป็น master
- db.printReplicationInfo() – เช็คว่า oplog มีอายุกี่วัน
วิธี Backup MongoDB
เทียบเท่า mysqldump นั่นเอง ตัวอย่างนั้นใช้ dump เฉพาะตารางที่กำหนด และ query ในช่วงเวลาที่กำหนด ดังนี้
mongodump –host –port –db <ชื่อ database> –collection <ชื่อ collection> -q ‘{“time”:{“$gte”:{“$date”:1360627200000}}}’
วิธี Restore MongoDB
mongorestore
ขอให้สนุกกับ MongoDB
อัพเดทฐานข้อมูล Mysql ผ่าน Command line by rainbow
Aug0
ตอนทำงานกับฐานข้อมูลใหญ่ๆ และต้องการย้ายหรือคัดลอกฐานข้อมูลขนาดใหญ่แล้ว การ import/export ผ่าน phpmyadmin นั้นจะทำงานได้ช้า หรืออาจจะทำไม่ได้เลยก็เป็นได้ แต่ยังมีขั้นตอนการย้ายฐานข้อมูลผ่านทาง command line ได้ ซึ่งทั้งความเร็ว และการรองรับขนาดข้อมูลต่างสูงกว่าทั้งสิ้น