กระทู้เมื่อเร็วๆ นี้

หน้า: [1] 2 3 ... 10
1
เคย Restore ฐานข้อมูลขนาด 300GB ใช้เวลาประมาณ 2  วัน

งานนี้ต้องหาวิธี จูน Server ดีๆ หน่อย

ไปค้น Google มาแปะเก็บไว้ใช้คราวต่อไป


อ้างถึง

mysql -u root -p

set global net_buffer_length=1000000; --Set network buffer length to a large byte number

set global max_allowed_packet=1000000000; --Set maximum allowed packet size to a large byte number

SET foreign_key_checks = 0; --Disable foreign key checking to avoid delays,errors and unwanted behaviour

source file.sql --Import your sql dump file

SET foreign_key_checks = 1; --Remember to enable foreign key checks when procedure is complete!

อีก  1 ตำรา

แก้ไข [ my.ini ] ใน ส่วน InnoDB

อ้างถึง

innodb_buffer_pool_size = 12G
# 60% - 70% ของขนาด RAM ในเครื่อง

innodb_log_buffer_size = 16M
# 16M or 32M

innodb_log_file_size = 3G
# 25% of buffer pool size

innodb_write_io_threads = 32
# 32 is fine, 64 is maximum

innodb_flush_log_at_trx_commit = 0


Restart Service แล้วทำการ Import ได้เลย

อย่าลืมเปลี่ยนคืนด้วยนะครับ
2
เกี่ยวกับเซิร์ฟเวอร์ [ Network Server ] / เปลี่ยนชื่อ Host ใน Ubuntu 18.04
« กระทู้ล่าสุด โดย อั๋น ทรงวุฒิ เมื่อ 28 ตุลาคม 2018, 11:09:06 PM »
อ้างถึง
hostnamectl set-hostname (ชื่อใหม่)

[ /etc/cloud/cloud.cfg ]

อ้างถึง
preserve_hostname: true

[/etc/hosts]
อ้างถึง
127.0.0.1       localhost
127.0.1.1       ชื่อใหม่
4
FoxPro [ xBase ] / Re: VFP + MySQL
« กระทู้ล่าสุด โดย Susan เมื่อ 24 ตุลาคม 2018, 01:51:50 PM »
พี่ครับ รับสอนเปล่าครับ ราคาเท่าไหร่
5
การ restore ฐานข้อมูล

ต้องล้าง folder ข้อมูลของ mysql ทั้งหมด (/var/lib/mysql)

แบบรักษาต้นฉบับ
อ้างถึง

xtrabackup --copy-back --target-dir=/data/backup/  --datadir=/var/lib/mysql


แบบย้ายต้นฉบับไปทั้งก้อน (เร็วกว่ามาก)
อ้างถึง

xtrabackup --move-back --target-dir=/data/backup/  --datadir=/var/lib/mysql

จากนั้นก็ start mysql ทำงานได้เลย
6
ถ้าพื้นที่ใน server กำลังจะเต็ม จะทำอย่างไร ?

ทางแก้คือสร้าง NFS share พื้นที่ข้ามเครื่อง จากนั้นก็จะมี folder โล่งๆ ให้รับข้อมูล

ปกติการใช้ mysqldump จะมีข้อเสียคือ ระหว่าง backup ฐานข้อมูลจะถูกล็อคการบันทึก ซึ่งถ้าเป็นหลัก 10GB ขึ้นไป ต้องรอกันนาน

ทางออกคือใช้โปรแกรม Percona XtraBackup (https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html)

อ้างถึง
xtrabackup --backup  --target-dir=/data/backups --datadir=/var/lib/mysql

ฐานข้อมูลขนาด 250GB ใช้เวลาประมาณ 1 ชั่วโมง 30 นาที

จากนั้นต้องทำการ prepare ก่อนนำข้อมูลไป restore

อ้างถึง
xtrabackup --prepare --target-dir=/data/backups/

แล้วทำการ สำเนา /data/backup ไปเครื่องปลายทาง

7
เกี่ยวกับเซิร์ฟเวอร์ [ Network Server ] / Re: ประโยชน์ของ mysql binary log
« กระทู้ล่าสุด โดย อั๋น ทรงวุฒิ เมื่อ 11 ตุลาคม 2018, 09:53:14 PM »
เครื่อง Master มีหน้าที่เก็บข้อมูลหลัก ถ้ามีการ update ใดๆ จะเขียนลงเครื่องนี้ก่อน ส่วนถ้ามีการอ่านข้อมูล จะไล่ไปอ่านเครื่อง slave
การทำงานในเครื่อง slave ห้ามมีการเขียน แก้ไข เพิ่มข้อมูลเด็ดขาด ไม่งั้นจะได้ข้อมูลผิดพลาด

การสั่งให้เครื่อง  Master ยอมรับการดูดข้อมูลจากเครื่อง slave

อ้างถึง
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.12' IDENTIFIED BY 'repl1234';

เมื่อมีการเพิ่มเติมแก้ไขข้อมูลจะเกิด Log ขึ้นมาดังนี้

อ้างถึง
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      224 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

เครื่อง Slave ก็ให้ตั้งคำสั่งเกาะข้อมูลเครื่อง Master

อ้างถึง
CHANGE MASTER TO MASTER_HOST='192.168.1.1',
                        MASTER_USER='repl',
                        MASTER_PASSWORD='repl1234',
                        MASTER_LOG_FILE='mysql-bin.000001',
                        MASTER_LOG_POS=224;
Query OK, 0 rows affected (0.03 sec)

เราสามารถสั่งให้เริ่มปรับข้อมูลให้ตรงเครื่อง Master ด้วยคำสั่ง
อ้างถึง
mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)

เช็คสถานะเครื่อง slave ด้วยคำสั่ง

อ้างถึง
mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)
8
เกี่ยวกับเซิร์ฟเวอร์ [ Network Server ] / ประโยชน์ของ mysql binary log
« กระทู้ล่าสุด โดย อั๋น ทรงวุฒิ เมื่อ 11 ตุลาคม 2018, 09:45:33 PM »
mysql-bin.000001 จะบันทึกร่องรอยของการแก้ไขเพิ่มเติมในฐานข้อมูล ซึ่งเครื่อง slave ก็จะอ่านไป update เครื่องตัวเองให้ตรงกับ Master
นอกจากนี้เครื่อง Master ก็ควรตั้งเวลาให้ Log ถูกลบอัตโนมัติภายในกี่วัน ซึ่งถ้าไม่ทำ อาจจะทำให้ Harddisk เต็มได้

[my.cnf]

อ้างถึง
[mysqld]
log-bin=mysql-bin
server-id=1
expire_logs_days=3

การลบ Log แบบ Manual ทำได้ด้วยคำสั่ง PURGE BINARY LOGS TO 'mysql-bin.03';
มันจะไล่ลบข้อมูลก่อนหน้าจนถึงไฟล์ที่เราระบุไว้ หรืออาจจะระบุเป็นวันก็ได้
PURGE BINARY LOGS BEFORE '2008-12-15 10:06:06';
ประโยชน์อีกอย่างของ bin log คือ ใช้แกะรอยความเปลี่ยนแปลงใน database ได้
mysqlbinlog binlog_files > newer_transaction.sql
9
เกี่ยวกับเซิร์ฟเวอร์ [ Network Server ] / sysv-rc-conf ใน ubuntu 18.04
« กระทู้ล่าสุด โดย อั๋น ทรงวุฒิ เมื่อ 20 กันยายน 2018, 02:06:37 PM »
เหมือนว่าคำสั่ง sysv-rc-conf ใน ubuntu 18.04 จะถูกถอดออกไปแล้ว คำสั่งที่น่าจะใช้การแทนได้คือ
อ้างถึง

systemctl status
systemctl stop some-service
systemctl disable some-service


10
เกี่ยวกับเซิร์ฟเวอร์ [ Network Server ] / Network config : Ubuntu 18.04
« กระทู้ล่าสุด โดย อั๋น ทรงวุฒิ เมื่อ 20 กันยายน 2018, 01:25:57 PM »
[ /etc/netplan/01-network-manager-all.yaml ]

อ้างถึง
network:
 version: 2
 renderer: networkd
 ethernets:
   enp3s0: (เปลี่ยนเอง)
     dhcp4: no
     dhcp6: no
     addresses: [192.168.1.100/24]
     gateway4: 192.168.1.1
     nameservers:
       addresses: [8.8.8.8,8.8.4.4]


netplan apply  แล้วทำการ Restart ก็ควรจะใช้การได้
หน้า: [1] 2 3 ... 10