Saya memiliki master yang memiliki 298 file relai baru-baru ini seperti hari ini, kembali dengan baik 298 hari.
Tidak ada definisi log relai di .cnf
dan
mysql> show variables like '%relay%';
+---------------------------------+----------------+
| Variable_name | Value |
+---------------------------------+----------------+
| innodb_overwrite_relay_log_info | OFF |
| max_relay_log_size | 0 |
| relay_log | |
| relay_log_index | |
| relay_log_info_file | relay-log.info |
| relay_log_purge | ON |
| relay_log_space_limit | 0 |
+---------------------------------+----------------+
Reset budak menghapusnya, tetapi kemudian mereka baru saja mulai dibuat ulang.
Adakah yang menyebabkan ini? Bagaimana cara menghentikannya?
EDIT UNTUK PERMINTAAN
Selamat datang kritik umum dari CNN tetapi mari kita mengingat topik OP.
---- cnf request
[mysqld]
character_set_server = utf8
max_connections=200
max_user_connections=160
max_connect_errors=10000
userstat_running = 1
log_warnings
slow_query_log=1
slow_query_log_file=/var/log/mysql/mysql-slow.log
long_query_time=2
innodb_file_per_table
innodb_open_files=2048
innodb_additional_mem_pool_size=1M
innodb_buffer_pool_size=512M
innodb_log_buffer_size=1M
innodb_log_file_size=128M
innodb_autoextend_increment=16
innodb_flush_method=O_DIRECT
datadir=/var/lib/mysql/
tmpdir=/var/lib/mysql_ramdisk
server-id=2
log-bin = /var/log/mysql/mysql-bin
log-bin-index = /var/log/mysql/mysql.index
key_buffer_size = 800M
preload_buffer_size = 256K
max_allowed_packet = 8M
table_cache = 512
sort_buffer_size = 8M
join_buffer_size = 8M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
thread_cache_size = 32
query_cache_size = 32M
query_cache_limit = 16M
myisam_sort_buffer_size = 2000M
tmp_table_size = 64M
max_heap_table_size = 64M
---- now for the cli requests
mysql> show slave status\G
Empty set (0.00 sec)
mysql> show master status;
+---------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------+----------+--------------+------------------+
| awesome-bin.xxxxxxx | yyyyyyyy | | |
+---------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
---- version
mysql> select version();
+--------------------+
| version() |
+--------------------+
| 5.1.47-rel11.1-log |
+--------------------+
1 row in set (0.00 sec)
mysql
replication
atxdba
sumber
sumber
RESET SLAVE
pada master dengan banyak log relay melakukannya untuk saya.Jawaban:
Jika Master memiliki relay log, maka Master juga harus menjadi Budak di tengah-tengah beberapa topologi Replikasi (yaitu, Master / Master, Replikasi Dirantai Daisy)
Apa yang dapat menyebabkan log relai tumbuh seperti ini?
REPLIKASI YANG RUSAK
Replikasi MySQL rusak ketika IO Thread atau SQL thread mati di bawah SKENARIO ini:
skip-slave-start
diaktifkanSTOP SLAVE
;SHOW SLAVE STATUS\G
menunjukkan AndaLast_Errno
danLast Error
Hal ini SITUASI # 3 itulah masalahnya. Ketika utas SQL mati karena kesalahan SQL, tidak ada mekanisme bawaan dalam Replikasi MySQL yang memicu utas untuk memutuskan sambungan .
REKOMENDASI
Satu-satunya cara yang layak untuk mengendalikan pertumbuhan log relai adalah dengan menetapkan batasnya
Mengatur relay_log_space_limit menempatkan batas 4G.
Ketika log relay sepenuhnya diproses
EPILOG
Jika Master dulu adalah Slave dan tidak perlu lagi, nonaktifkan saja.
Jika Master adalah seorang budak, perbaiki kesalahan SQL.
Saya akan menyarankan ini jika kesalahan SQL di jalan:
kemudian jalankan
SHOW SLAVE STATUS\G
setiap menit untuk melihat apakah log relai diproses dan diputar.sumber
Tanpa melihat my.cnf Anda, tidak mungkin untuk menjawab pertanyaan ini, tetapi saya juga menyarankan untuk memposting keluaran SHOW SLAVE STATUS \ G Anda - apakah mungkin budak Anda sebenarnya sangat jauh tertinggal? Itu akan membuat log relai tetap ada. Apakah thread SQL Slave berjalan?
sumber
Mungkinkah file my.cnf salah dikonfigurasi dan master binary log dinamai relay log?
Atau mungkin master Anda memiliki pengaturan replikasi kode keras dalam file my.cnf, yang diambil pada saat restart MySQL.
EDIT: Apakah Anda menutupi nama file binlog yang sebenarnya di
show master status
output? Saya bertanya karena pengaturan di my.cnf tidak cocok dengan nama binlog. Jika demikian, dapatkah Anda memberikan nama file yang sebenarnya, dan outputshow slave status
seperti yang disebutkan Harun? Sejauh ini selain nama mismatch untuk bin-log, tidak ada yang menonjol dalam file my.cnf Anda.sumber
Jalankan perintah RESET SLAVE. Ini akan membersihkan log relai dan membuat ulang yang baru. Tapi, itu tidak akan menggunakan yang baru. Anda dapat memeriksa dengan menjalankan perintah FLUSH LOGS nanti, server tidak akan membuat log relai kedua.
sumber