Pengaturan replikasi database MySQL

15 September 2008

Ini selalu tentang data. Apa penggunaan sistem apapun tanpa data yang bergantung pada?

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

Untungnya, mudah dengan MySQL. Jadi mari kita misalkan kita memiliki dua server yang berjalan MySQL, satu yang disebut host1 dan host2 lainnya.
Replikasi dapat berupa master-master atau master-slave. Dengan replikasi master-budak, budak selalu meniru apa master database dieksekusi. Dalam replikasi master-master, baik database sinkronisasi dengan satu sama lain.

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

Pertama-tama, buka file konfigurasi mysql pada host1 (biasanya ditemukan di / my.cnf etc / pada linux, dan c: \ windows \ my.ini di windows), dan tanda komentar (hapus hash) 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 direktori default instalasi mysql (seperti c: \ program files \ mysql \ pada windows atau / var / lib / mysql di linux)

Kemudian, Anda perlu menentukan nama database yang bersangkutan. 'Work_data' Jadi jika Anda menyiapkan replikasi untuk salah satu database MySQL Anda disebut, maka, ini adalah garis yang Anda butuhkan untuk ditambahkan ke konfigurasi MySQL:

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 memberi host2 ijin untuk mereplikasi data. Dengan demikian, permintaan MySQL harus dikeluarkan pada master.

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

hibah replikasi budak pada *.* 'username'@'%' diidentifikasi oleh' untuk password ';

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

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

Jika database memiliki data sebelumnya, pastikan Anda membuangnya dan beban pada budak sebelum melakukan apapun di atas. Dumping data mudah dan dapat dilakukan oleh cd'ing ke direktori bin MySQL dan penerbitan:

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

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

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

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

MySQL config file pada host2 harus memiliki baris berikut:

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

dimana host1 adalah hostname master / IP, dan username dan password kepercayaan yang Anda digunakan saat memberikan replikasi mengakses beberapa langkah di atas. 3306 adalah port MySQL bekerja pada (yang merupakan default)

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

mulai budak;

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

budak menunjukkan status \ G

(Slave_SQL_Running dan Slave_IO_Running harus melaporkan 'Ya')

Semoga sukses

Tags:
  1. host2
    1 April 2010 jam 20:02
    # 1
  2. admin
    23 September 2008 jam 16:58

    Anda bisa men-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 hostname untuk menunjuk ke mesin slave.
    Pengguna tidak akan melihat perubahan jika Anda mengubah IP resolve ke nama host.

  3. Robert
    23 September 2008 jam 13:44

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

  4. admin
    17 September 2008 jam 11:25

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

  5. Robert
    17 September 2008 jam 10:49

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