Bagaimana cara menonaktifkan replikasi MySQL sepenuhnya


64

Saya menjalankan replikasi MySQL master ganda dan sekarang ingin pindah ke satu database tanpa replikasi. Bagaimana cara saya sepenuhnya menonaktifkan replikasi pada kedua database?

Jawaban:


81

Untuk sepenuhnya menonaktifkan replikasi dengan pengaturan master-master, Anda harus melakukan hal berikut pada setiap budak:

  1. STOP SLAVE;
  2. RESET SLAVE;(Gunakan RESET SLAVE ALL;untuk MySQL 5.5.16 dan yang lebih baru)
  3. Edit my.cnf dan hapus semua informasi (jika ada) yang merujuk pada opsi "master -..." atau "replikasi -...". Anda mungkin tidak memiliki apa pun di my.cnf, karena replikasi dapat diatur secara dinamis juga.
  4. Mulai ulang mysqld.

jika replikasi diatur secara dinamis, langkah 1 dan 2 sudah cukup.
tanyehzheng

4
Sampai MySQL dimulai kembali, ia akan melaporkan informasi replikasi lama pada SLAVE STATUSpermintaan bahkan setelah RESET SLAVEperintah diberikan. Penting untuk diketahui untuk pemantauan atau alat manajemen konfigurasi jarak jauh. Perilaku yang dikonfirmasi dengan MySQL 5.5.38 pada CentOS 6.5.
Chris Laskey

Saya melakukan langkah-langkahnya tetapi mengapa budak yang tidak aktif itu masih dalam daftar perintah mtop? Bagaimana cara menghapusnya dari daftar?
Scott Chu

18

Saya tahu ini adalah pertanyaan lama tetapi saya menemukan saya juga harus mengatur ulang variabel budak. Jika Anda menggunakan "bla" seperti yang disarankan, server akan mencoba saat memulai untuk menemukan server 'bla'.

Ubah MASTERkeMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';

Anda dapat memverifikasi bahwa mesin tidak lagi menjadi budak

SHOW SLAVE STATUS \G;

5
Ini tidak lagi berfungsi. Pengaturan CHANGE MASTER TO MASTER_HOST=''sekarang melempar kesalahan.
Gray

GALAT 1210 (HY000): Argumen yang salah untuk MASTER_HOST
Kazimieras Aliulis

Bekerja untuk saya di CentOS 6 (MySQL 5.1), setelah ini SHOW SLAVE STATUS mengembalikan set kosong, sedangkan setelah RESET SLAVE masih menunjukkan beberapa info master.
Martijn

Jawaban ini masih berlaku untuk pengguna MySQL 5.1 (masih ada di luar sana).
RolandoMySQLDBA

12

Pada server slave:

  1. Jalankan "stop slave" untuk menghentikan replikasi.
  2. Jalankan "reset slave" untuk memberi tahu server slave untuk melupakan posisinya dalam log biner yang diambil dari server master.
  3. Tambahkan "skip-slave-start" ke my.cnf untuk mencegah replikasi dimulai ketika Anda me-restart MySQL.

Tidak perlu me-restart MySQL pada master atau slave. Dokumentasi lengkap dapat ditemukan di bagian 19 dari Manual Referensi MySQL .

Saya akan merekomendasikan untuk meninggalkan pengaturan replikasi yang tersisa jika Anda memutuskan untuk kembali ke konfigurasi sebelumnya. Dengan begitu Anda hanya perlu mendorong data dan mengatur ulang posisi slave (jangan lupa untuk menghapus lompat-slave-start) daripada membuat ulang seluruh pengaturan.



6

Mengedit file my.cnf saja tidak cukup untuk menonaktifkan replikasi. Bahkan, ini bukan lagi cara yang disarankan untuk mengaktifkannya. Menempatkan entri dalam file my.cnf hanya efektif untuk startup berikutnya dan bersikap seolah-olah Anda telah memasukkan perintah ke klien mysql:

mysql> ganti master ke master_host = 'blah', master_user = 'blah', master_password = 'blah' ...;

Kedua metode ini akan membuat file di direktori data yang disebut master.info . Selama file ini ada, server akan mencoba dan mereplikasi menggunakan detail di sana. "RESET SLAVE;" perintah yang tercantum dalam jawaban pertama akan menyingkirkan file master.info (dan juga file relay-log.info ). Seperti disebutkan dalam jawaban pertama, Anda juga ingin memastikan bahwa Anda tidak memiliki informasi konfigurasi di file my.cnf, jika tidak, pada restart server berikutnya, logging akan diaktifkan kembali.


5

Satu jawaban ada di sini:

http://www.oops.net.br/~bac/bam/canopy_repl_setup.htm

* Edit file konfigurasi MySQL: /etc/my.cnf dan hapus 7 baris berikut ke bagian berjudul [mysqld]:

port=3306
log-bin
server-id=1
master-host=10.0.0.2
master-user=server_1_repl
master-password=server_1_passwd
master-port=3306*

Mulai ulang MySQL.


4

Saya menambahkan ini ke jawaban Harrison Fisk:

Jika Anda menggunakan RESET SLAVE ALL;maka restart tidak diperlukan.

Selain itu, Anda mungkin ingin mengaktifkan acara yang telah dinonaktifkan pada slave:

select * from information_schema.events where status = 'SLAVESIDE_DISABLED';

Untuk masing-masing:

alter event <event_name> enable;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.