# ----------------------------------------------------------------------------- # MYSQL NOTLARI # ----------------------------------------------------------------------------- # ----------------------------------------------------------------------------- # REPLICATION # ----------------------------------------------------------------------------- Master-Slave olarak çalışan MySQL makinelerinin ayarlanması. # Master: replication kullanıcısının oluşturulması CREATE USER replica@'%' IDENTIFIED BY 'PAROLA'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES; # Master: /etc/mysql/my.cnf ayarları server-id=1 log-bin=/var/log/mysql/replication binlog-do-db=VERITABANI innodb_flush_log_at_trx_commit=1 sync_binlog=1 skip-slave-start /etc/init.d mysql restart # Master: MASTER STATUS ve veritabani dump Dump ve STATUS bilgileri aynı ana ait olmalı. mysqldump -u root -pPAROLA --master-data VERITABANI > veritabani.sql # Master: MASTER STATUS ve veritabani dump (Manuel LOCK ile) Bir önceki madde uygulandı ise buna gerek yok. Burada aynı işlem, manuel LOCK yapılarak tekrarlanıyor. mysql -u root -p FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; +--------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +--------------------+----------+--------------+------------------+ | replication.000011 | 17055299 | VERITABANI | | +--------------------+----------+--------------+------------------+ mysqldump -u root -pPAROLA --opt VERITABANI > veritabani.sql mysql -u root -p UNLOCK TABLES; # Slave: /etc/mysql/my.cnf ayarları server-id=2 read_only=TRUE replicate-wild-do-table=dbname.% slave-skip-errors = 1062 /etc/init.d mysql restart # Slave: Verilerin kopyalanması mysql -u root -p STOP SLAVE; RESET SLAVE; mysql -u root -p VERITABANI < veritabani.sql mysql -u root -p -- dump alinirken --master-data kullanildi ise dump icinde bu satir oluyor CHANGE MASTER TO MASTER_HOST='10.0.0.23', MASTER_USER='replica', MASTER_PASSWORD='PAROLA', MASTER_LOG_FILE='replication.000001', MASTER_LOG_POS=5674108; START SLAVE; # Replication durumu SHOW MASTER STATUS\G SHOW SLAVE STATUS\G # Kaynaklar http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html http://aciddrop.com/2008/01/10/step-by-step-how-to-setup-mysql-database-replication/ http://www.howtoforge.com/mysql_database_replication http://www.percona.com/doc/percona-xtrabackup/2.2/howtos/setting_up_replication.html # ----------------------------------------------------------------------------- # /etc/mysql/conf.d/custom.cnf # ----------------------------------------------------------------------------- Buradaki değerler örnektir, her sistem için ayrı ayralamak gerekmekte. /usr/share/doc/mysql-server-5.5/examples klasöründeki örnek ayarlamalardan faydalanılabilir. [mysqld] bind-address = 0.0.0.0 max_connections = 100 skip-name-resolve key_buffer = 256M wait_timeout = 300 table_open_cache = 4096 query_cache_limit = 10M query_cache_size = 64M sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 2M myisam_sort_buffer_size = 64M log_slow_queries = /var/log/mysql/mysql-slow.log long_query_time = 2 # ----------------------------------------------------------------------------- # PROFILING # ----------------------------------------------------------------------------- # Oturum için profiling'i başlatma SET profiling = 1; # Oluşan profile kayıtlarını listeleme SHOW PROFILES; # Profile detaylarını görüntüleme SHOW PROFILE FOR QUERY ; bilgisi, "SHOW PROFILES" ile alınan listeden tesbit edilir. # Sorgu analizi EXPLAIN SELECT ... Kullanilacak indeksler, taranacak kayıt adetleri görüntülenir. Row alanındaki kayıtların çarpımı kadar kayıt kontrol edilecek demektir. (row0 * row1 * ...) # ----------------------------------------------------------------------------- # SORGU ÖRNEKLERİ # ----------------------------------------------------------------------------- # Düşük öncelikli UPDATE UPDATE LOW_PRIORITY tablename SET ...