Menyiapkan replikasi database MySQL

Itu selalu tentang data. Apa penggunaan sistem apapun tanpa bergantung pada data itu?

Menyiapkan replikasi database merupakan salah satu dari banyak langkah yang harus diambil dalam rangka untuk mempertahankan data, mencegah kerugian dan membuat pemulihan bencana lebih mudah.

Untungnya, mudah dengan MySQL. Jadi andaikan kita memiliki dua server menjalankan MySQL, salah satu disebut host1 host2 dan lainnya.
Replikasi dapat berupa master-master atau tuan-budak. Dengan replikasi master-budak, budak selalu meniru apa yang database master mengeksekusi. Dalam master-master replikasi, kedua database sinkronisasi dengan satu sama lain.

Untuk tujuan dari tutorial ini, master-budak (di sini host1 host2 dan masing-masing) skenario diperiksa.

Pertama-tama, buka file konfigurasi mysql pada host1 (biasanya ditemukan di / etc / my.cnf pada linux, dan c: \ windows \ my.ini pada windows), dan tanda komentar (menghapus hash dari) baris berikut:

# Skip-networking

Kedua, Anda perlu menentukan file mana master (host1) harus log (menulis) permintaan itu mengeksekusi. Hal ini akan memungkinkan budak (host2) untuk membaca pertanyaan dan mengeksekusi mereka juga. Dengan demikian, tambahkan baris seperti:

log-bin = / path / ke / mysql-bin.log

dimana nilai di atas adalah path ke file di mana MySQL harus melakukan penebangan. Anda bisa sangat baik membuat direktori yang terpisah atau menggunakan mysql default direktori instalasi (seperti c: \ program files \ mysql \ di windows atau / var / lib / mysql di linux)

Kemudian, Anda perlu menentukan nama database yang bersangkutan. Jadi jika Anda sedang menyiapkan replikasi untuk salah satu database MySQL Anda disebut 'work_data', maka, ini adalah baris Anda perlu menambahkan untuk konfigurasi MySQL Anda:

binlog-do-db = work_data

Akhirnya, Anda perlu menentukan id server, yang mengatakan bahwa ini adalah server master

server-id = 1

Simpan file konfigurasi dan keluar.
Sekarang Anda perlu memberikan host2 izin untuk mereplikasi data. Dengan demikian, query MySQL harus dikeluarkan pada master.

Jadi pada host1, login ke prompt MySQL (mysql-u root-pyour_root_password) (atau PHPMyAdmin, dll ... apapun yang Anda gunakan), dan masalah pernyataan berikut:

hibah replikasi budak di *.* to ''@'%' nama pengguna diidentifikasi oleh' password ';

Pastikan untuk mengganti username dan password dengan credential dari pilihan Anda. Apakah menjaga tanda kutip tunggal sekalipun.
Tanda% berarti bahwa budak dapat menghubungkan dari host manapun. Jika Anda ingin menjadi lebih aman, ganti bahwa dengan host2 (slave nama host).

Setelah semua di atas dilakukan, restart layanan MySQL (layanan mysqld restart (linux) atau, bersih menghentikan mysql, mysql mulai bersih (di windows)).

Jika database memiliki data sebelumnya, pastikan Anda dump dan beban pada slave sebelum melakukan apapun di atas. Dumping data mudah dan dapat dilakukan dengan cd'ing ke direktori bin MySQL dan menerbitkan:

mysqldump-Q-u root-pyour_root_password databasename> database_dump.sql

(Mengganti password dan nama database dengan login yang benar). Seluruh database sekarang akan berada di file bernama database_dump.sql

Untuk impor pada host2, cd ke direktori bin mysql dan masalah:

mysql-u root-pyour_root_password databasename </ path / ke / direktori / file / database_dump.sql

Konfigurasi MySQL file pada host2 harus memiliki baris berikut:

server-id = 2
master-host = host1
master-user = username
master-password = password
master-port = 3306

mana host1 adalah nama host / IP master, dan username dan password adalah kepercayaan yang Anda gunakan ketika memberikan akses replikasi beberapa langkah di atas. 3306 adalah port MySQL berjalan pada (yang merupakan default)

Kemudian mulai proses budak di host2 dengan menerbitkan pada prompt MySQL:

mulai budak;

Untuk membuat replikasi pasti adalah bekerja, masalah query SQL berikut pada host1:

menampilkan status budak \ G

(Slave_SQL_Running dan Slave_IO_Running harus melaporkan 'Ya')

Semoga sukses

5 Komentar

Robert September 17, 2008 at 10:49

Besar, hanya apa yang saya butuhkan. Sekarang ... Apakah mungkin untuk mengatur beberapa perangkat Guru mereplikasi hanya dalam satu Server Slave?. Aku bertanya ini karena im mencoba untuk mendirikan sebuah topologi Aktif-stanby di mana, jika salah satu dari Master Gagal itu bisa menggantikan sementara oleh server Slave. Terima kasih

admin 17 Sep 2008 at 11:25

Robert terhormat,
Bagaimana menjalankan beberapa layanan MySQL pada host budak? Setiap akan berjalan pada port yang berbeda dan akan tergantung pada master yang berbeda.

Robert September 23, 2008 at 01:44

Thats Genius! , Meskipun saya harus mengubah cara pengguna terhubung ke database untuk membuat transisi yang mulus dalam hal kegagalan.

admin 23 Sep 2008 at 04:58

Anda bisa setup layanan DNS lokal, dan membuat pengguna menggunakan nama host (dalam kasus normal menunjuk ke master) untuk mengakses layanan Anda.
Dalam hal kegagalan, Anda hanya mengubah data DNS itu nama host untuk menunjuk ke mesin budak.
Pengguna tidak akan melihat perubahan jika Anda mengubah IP yang menyelesaikan nama host ke.

host2 April 1, 2010 at 08:02

[...] Memungkinkan untuk menambah atau menghapus node dari cluster tanpa perlu mengkonfigurasi ulang dan Trik clients.Tips Menyiapkan database MySQL replicationSo mari misalkan kita punya dua server menjalankan MySQL, salah satu disebut host1 host2 dan lainnya. ... Jika Anda [...]

Tinggalkan komentar

Komentar Anda