Category Archives: MySQL

backup mysql binary logs

Saya paling suka membackup hehe…mau delete log files lama juga sayang kan, mana tau suatu saat di minta polisi mencari jejak kan tinggal kasih.  Untuk keperluan membackup mysql binary logs diperlukan bash script dan saya modifikasi dari http://forge.mysql.com/tools/tool.php?id=73

backup_user=binlog
backup_password=password
backup_port=3306
backup_host=localhost
log_file=/var/log/binlog_backup.log
binlog_dir=/san/mysql-us/mysqllogs
backup_dir=/home/gtoms/mysql_binlog_backup/

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH

Log()
{
echo “`date` : $*” >> $log_file
}

mysql_options()
{
common_opts=”–user=$backup_user –password=$backup_password”
if [ “$backup_host” != “localhost” ]; then
common_opts=”$common_opts –host=$backup_host –port=$backup_port”
fi
}

mysql_command()
{
mysql $common_opts –batch –skip-column-names $1 -e “$2”
}

Log “[INIT] Starting MySQL binlog backup”

Log “Flushing MySQL binary logs (FLUSH LOGS)”

mysql_command mysql “flush logs”

master_binlog=`mysql_command mysql “show master status” 2>/dev/null | cut -f1`

Log “Current binary log is: $master_binlog”

copy_status=0

for b in `mysql_command mysql “show master logs” | cut -f1`
do
if [ -z $first_log ]; then
first_log=$b
fi
if [ $b != $master_binlog ]; then
Log “Copying binary log ${b} to ${backup_dir}”
rsync -a $binlog_dir/$b $backup_dir >& /dev/null
if [ $? -ne 0 ]; then
copy_status=1
break
fi
else
break
fi
done

if [ $copy_status -eq 1 ]; then
Log “[ERR] Failed to copy binary logs cleanly…aborting”
exit 1
fi

membuat mysql-cluster

Pekerjaan ini diterapkan di kantorku yang memiliki server Mysql untuk dipakai sehari-hari sebagai operasional. Dengan fitur Mysql Cluster dapat menggabungkan database open source  dengan fault tolerant asitektur “shared nothing“,  yang memungkinkan kantor untuk menggunakan aplikasi database real-time dan mission-critical yang mencapai ketersediaan 99,999 persen (“five nine“). Dengan alasan inilah dan menghindari downtime,  maka Boss operasional ISP kantor minta dibuatkan sistem mysql cluster.  Implementasi mysql-cluster tidak lah sulit, dalam implementasi ini dilakukan tahapan :

– Konfigurasi Mysql-cluster di server Mysql utama(/etc/mysql/my.cnf dan convert engine MYISAM ke NDBCLUSTER)

– Instalasi Mysql dan konfigurasi Mysql-cluster di server lain(anggaplah replika mysql server utama atau mysql tambahan) (/etc/mysql/my.cnf dan hasil dumping mysql dengan engine NDBCLUSTER)

– Instalasi Mysql dan Management (MGM) Node & MySQL Server pada server lain. (/etc/mysql/ndb_mgm.cnf)

Jadi ada 3 Server dengan fungsi dan software yang dipakai :

-1 server Mysql utama sebagai Node A untuk mysql cluster

-1 server Mysql tambahan sebagai Node B untuk mysql cluster

-1 server Mysql untuk Management (MGM)sebagai NDB MGM untuk mysql cluster

Total ada 3 server dengan sistem operasi Linux Debian Lenny 2.6.26-2-686 dan  Mysql 5.0.51a-24+lenny1 (Debian).

MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL Relational Database Management System (RDBMS) yang didistribusikan secara gratis dibawah lisensi GPL (General Public License).

MySQL Cluster didesain untuk mengatasi single point of failure, yaitu bagian dari suatu sistem, yang
bilamana sistem tersebut mengalami kerusakan maka seluruh sistem akan berhenti bekerja. Oleh karena
itu maka setiap komponen diharapkan memiliki memory dan disk sendiri / terpisah, dan menggunakan
mekanisme shared storage,  seperti network shares dan network filesystems.

MySQL Cluster sudah terintegrasi dengan standar MySQL server dengan sebuah  clustered storage engine yang disebut NDB. MySQL Cluster terdiri dari sekumpulan komputer yang masing­-masing berjalan satu atau lebih proses, yang terdiri dari SQL Server, data node, dan management node.

Data Node merupakan node utama pada MySQL Cluster. Data Node berfungsi :
-Storage and management of both in ­memory and disk ­based data
-“Transactions and data retrieval
-“Automatic and user defined partitioning of data
-“Synchronous replication of data between data nodes
-“Transactions and data retrieval
-“Fail over
-“Resynchronization after failure

MySQL Node berfungsi sebagai pintu akses untuk masuk ke dalam node­ node data yang tercluster.

Management Node digunakan  untuk  mengatur node­-node  yang  terdapat  pada MySQL  Cluster,  melakukan  konfigurasi data, menjalankan dan memberhentikan node, melakukan backup dan lain sebagainya.  Semua  program  ini  berkerjasama  membentuk  sebuah  MySQL  Cluster.  Ketika  data  disimpan  pada NDB Cluster storage angine, maka tabel­-tabel akan disimpan pada data node. Tabel­-tabel tersebut akan diakses secara langsung oleh MySQL Server pada sebuah cluster.

Berikut proses instalasi dan konfigurasi yang berhasil saya copy paste dari konsol linux :

Continue reading

repair table mysql

Menganalisa masalah pada sebuah system yang sedang running(produksi) haruslah cepat dan tepat untuk menghindari downtime yang lama. Salah satu server yang saya handle mengalami masalah, kebetulan saat terjadi masalah saya tidak berada di office sehingga trouble shoot yang bisa dilakukan secara remote. Rekan di bagian Network Operation Centre(NOC) melaporkan kejadian ini via telepon bahwa service pop3 ini mengalami masalah di kantor dan sejumlah client, server email pop3 yang menggunakan operating system linux sangat diperlukan untuk kebutuhan mail hosting client kantorku.

Langkah menghadapi kasus ini adalah melihat log error yang terjadi baik pada mail client dan log error pada mailserver.

Saya mencoba menggunakan mail client untuk test tarik email dan didapat error sebagai berikut :

There was a problem logging onto your mail server. Your Password was rejected. Account: ‘mail.namadomain.net’, Server: ‘mail.namadomain.net’, Protocol: POP3, Server Response: ‘vmysql: error creating table ‘vlog’: Table ‘vlog’ already exists’, Port: 110, Secure(SSL): No, Server Error: 0x800CCC90, Error Number: 0x800CCC92

Dari log error diatas didapat letak permasalahan ada pada table vlog pada database vpopmail yang menggunakan Mysql.

Untuk lebih menelusuri apa yang terjadi pada table vlog, saya remote ke server pop3 yang berada di Gedung Cyber Lt IV, dan melihat log

# tail -f /var/log/mail.log

…………snip……………………..
May 21 11:05:55 mailserver vpopmail[5112]: vchkpw-pop3: password fail renata@namadomain.net:202.51.xxx.xxx
May 21 11:05:55 mailserver mysqld[5030]: 080521 11:05:55 [ERROR] /usr/sbin/mysqld: Table ‘./vpopmail/vlog’ is marked as crashed and should be repaired
………..snip………………….

Dari log aiats saya langsung dapat mengetahui bahwa table vlog yang terdapat didalam table vpopmail mengalami crash dan harus direpair.

Langkah selanjutnya adalah login ke mysql
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 445
Server version: 5.0.32-Debian_7etch5 Debian etch distribution

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> use vpopmail;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+——————–+
| Tables_in_vpopmail |
+——————–+
| dir_control |
| domain_alias |
| lastauth |
| valias |
| vlog |
| vpopmail |
+——————–+
6 rows in set (0.00 sec)

mysql> REPAIR TABLE vlog;
+—————+——–+———-+————————————————+
| Table | Op | Msg_type | Msg_text |
+—————+——–+———-+————————————————+
| vpopmail.vlog | repair | warning | Number of rows changed from 1263639 to 1263640 |
| vpopmail.vlog | repair | status | OK |
+—————+——–+———-+————————————————+
2 rows in set (49.13 sec)

done

Kunci penyelesaian masalah ini ada pada baris command REPAIR TABLE vlog;

Jika proses repair table vlog tersebut gagal, maka siapkan solusi lain yaitu dengan menimpa/replace table vlog yang rusak dengan table vlog pada server backup.

Kemudian cek log kembali di server dan aku coba login menggunakan mail client kembali, dan berhasil tanpa muncul kembali log error sebelumnya, lalu saya telepon ke bagian NOC/CRC(Customer Response Centre) kantor untuk memberitahukan trouble shoot sudah selesai. Service POP3 sudah up kembali.

mysql ERROR 2002

Server colo temenku yang di taruh di Dhecyber bermasalah, server dengan sistem operasi fedora linux tersebut berisi cpanel dan menghost ratusan email kantor dan websitenya. Temanku minta tolong agar aku mengecek apa permasalahannya dan minta di solving kalau bisa. Aku remote ke servernya dan mencoba cek satu persatu setiap aktifitas yang terjadi dan coba eliminasi satu persatu problem yang terjadi.mysql di cpanelnya tidak jalan dan jika menjalankan phpMyAdmin melalui cpanelnya lewat browser keluar pesan error : Continue reading