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?


sumber

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.

sumber
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;
H. Pauwelyn
sumber
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.


sumber
7

Terlepas dari versi MySQL, Cara paling lengkap untuk melakukan ini adalah sebagai berikut

cd /var/lib/mysql
service mysql stop
rm -f master.info relay-*`
service mysql start

Ini harus bekerja untuk dia versi terbaru karena pengaturan replikasi masih tertinggal di RAM untuk MySQL 5.5.

Saya baru saja menjawab pertanyaan serupa tentang hal ini: Bagaimana mengubah budak MySQL sebelumnya menjadi master dan menghapus informasi status budak?

RolandoMySQLDBA
sumber
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.

Tim
sumber
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.


sumber
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;
Franc Drobnič
sumber