cari
Rumahpangkalan datatutorial mysqlMySQL双Master配置_MySQL

主机环境说明。

master1: 10.8.1.11

master2: 10.8.1.12

版本信息:

    [root@m1 ~]# mysql -V

    mysql  Ver 14.14 Distrib 5.6.27, for Linux (x86_64) using  EditLine wrapper

 

1、主库开启bin-log功能,配置server-id

 

修改my.cf配置文件,开启bin-log功能,配置server-id。

    [root@m1 ~]# more /etc/my.cnf
    
    # For advice on how to change settings please see
    # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
    
    [mysqld]
    server-id = 1
    datadir = /var/lib/mysql
    log_bin = /var/lib/mysql/bin-log
    socket = /var/lib/mysql/mysql.sock
    slave_net_timeout = 60
    log-slave-updates
    slave-skip-errors=all
    skip-name-resolve
    sync_binlog=1
    auto_increment_increment=2
    auto_increment_offset=1
    
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    
#salve-net-timeout默认是3600秒,缩短时间是为了防止双YES的假象
#(事实上我已遇到,参考地址:http://www.cnblogs.com/billyxp/p/3470376.html)
如果要指定同步或不同步哪些库,可使用如下参数
#binlog-do-db=osyunweidb   #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
#binlog-ignore-db=mysql    #不同步mysql系统数据库

 

至于这些参数的说明具体看手册。

 

红色的部分非常重要,如果一个MASTER 挂掉的话,另外一个马上接管。

紫红色的部分指的是服务器频繁的刷新日志。这个保证了在其中一台挂掉的话,日志刷新到另外一台。从而保证了数据的同步 

 

2、确认bin-log与server-id是否开启:

 

查看命令 show variables like 'log_bin'; show variables like 'server_id';

mysql> show variables like 'log_bin';
+---------------+-------+
|Variable_name | Value |
+---------------+-------+
|log_bin       | ON   |
+---------------+-------+
1 rowin set (0.00 sec)
mysql>show variables like 'server_id';
+---------------+-------+
|Variable_name | Value |
+---------------+-------+
|server_id     | 1     |
+---------------+-------+
1 rowin set (0.00 sec)

 

 

3、创建复制授权用户

 

mysql> grant replication slave on *.* to replication@'%'identified by '123456'; #授权该用户对所有表都能进行复制

mysql>flush privileges;  #刷新权限

 

4、锁表,记录log-bin文件名和位置

 

mysql>flush tables with read lock;     #锁定所有表,此时数据库不能写入数据
QueryOK, 0 rows affected (0.05 sec)

mysql>show master status;      #查看最新bin-log文件及位置
+------------------------+------------+-------------------+-------------------------+
|File                   | Position   | Binlog_Do_DB      | Binlog_Ignore_DB        |
+------------------------+------------+-------------------+-------------------------+
|mysql-bin.000001       |  26314    |                   |                        |
+------------------------+------------+-------------------+-------------------------+
1row in set (0.00 sec)

 

 

5、锁表状态全备mysql数据

 

由于退出当前mysql登陆窗口,锁表功能就失效,需克隆一个会话进行全备。

#mysqldump-uroot -p -A -B > /tmp/mysql_bak_2015_11_17.sql

 

看下备份数据大小,确认备份成功。

    [root@m1 ~]# ls -l mysql_bak_2015_11_17.sql 

    -rw-r--r--. 1 root root 645327 Nov 18 06:27 mysql_bak_2015_11_17.sql

    [root@m1 ~]# 

 

 

6、解除锁表

 

mysql>unlock tables;

或直接quit退出即可。

 

7、从库开启bin-log功能,配置server-id

 

从库开启bin-log功能后,待会在主上在配置同步,互为主从就完成了。

[root@m2 ~]# vi /etc/my.cnf
    
    # For advice on how to change settings please see
    # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
    
    [mysqld]
    server-id = 2
    datadir = /var/lib/mysql
    log_bin = /var/lib/mysql/mysql-bin
    socket = /var/lib/mysql/mysql.sock
    slave_net_timeout = 60
    log-slave-updates
    slave-skip-errors=all
    skip-name-resolve
    sync_binlog=1
    auto_increment_increment=2
    auto_increment_offset=2
    
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#salve-net-timeout默认是3600秒,缩短时间是为了防止双YES的假象

 

#

至于这些参数的说明具体看手册。

 

红色的部分非常重要,如果一个MASTER 挂掉的话,另外一个马上接管。

紫红色的部分指的是服务器频繁的刷新日志。这个保证了在其中一台挂掉的话,日志刷新到另外一台。从而保证了数据的同步 

#/etc/init.d/mysql restart

 

8、确认从库bin-log与server-id是否开启

 

查看命令 show variables like 'log_bin'; show variables like 'server_id';

mysql>show variables like 'log_bin';
+---------------+-------+
|Variable_name | Value |
+---------------+-------+
|log_bin       | ON    |
+---------------+-------+
1row in set (0.00 sec)
mysql>show variables like 'server_id';
+---------------+-------+
|Variable_name | Value |
+---------------+-------+
|server_id     | 2     |
+---------------+-------+
1row in set (0.00 sec)

 

 

9、从库导入主库的全备数据

 

登陆mysql导入数据

mysql>source /root/mysql_bak_2015_11_17.sql 

 

10、记录从库bin-log信息

 

因为在从库导入全备数据时,此时主库与从库的内容是一致的,但是bin-log位置不一定一致。

mysql>show master status;      #查看最新bin-log文件及位置
+------------------------+------------+-------------------+-------------------------+
|File                   |Position   | Binlog_Do_DB      | Binlog_Ignore_DB        |
+------------------------+------------+-------------------+-------------------------+
|mysql-bin.000003       |  2328055   |                   |                        |
+------------------------+------------+-------------------+-------------------------+
1row in set (0.00 sec)

 

 

11、从库设置同步主库

 

此处binlog文件与位置状态,是主库在步骤4锁表时show master status查看的位置状态。

 

CHANGE MASTER TO 
MASTER_HOST='10.8.1.11',
MASTER_PORT=3306,
MASTER_USER='replication',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=26314;

 

 

12、开启从库同步并确认同步是否成功

 

使用start slave开启同步功能,使用show slave status\G查看同步是否成功

mysql>start slave;
QueryOK, 0 rows affected (0.00 sec)
mysql>show slave status\G   #\G不按表格输出
***************************1. row ***************************
               Slave_IO_State: Waiting formaster to send event
                  Master_Host: 10.0.0.2
                  Master_User: replication
                  Master_Port: 8306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 136270
               Relay_Log_File:mysqld-relay-bin.000002
                Relay_Log_Pos: 72697
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running:Yes
            Slave_SQL_Running:Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 98758
              Relay_Log_Space: 110366
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 622   #查看主从同步延迟,延迟大则可能需要优化
Master_SSL_Verify_Server_Cert:No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
1row in set (0.00 sec)

 

 

#sql线程与IO线程都是YES,slave配置成功。

 

13、主库设置同步从库

 

由于从库是全备导入,原先在主库上配置的复制帐户也同样导入,所以这里不用在从库上新授权复制用户。

 

从库上的binlog文件与位置状态,是从库在刚导入时show master status查看到的位置状态。

CHANGEMASTER TO 
MASTER_HOST='10.8.1.12',
MASTER_PORT=3306,
MASTER_USER='replication',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=2328055;
#修改相应信息,直接把这些配置在mysql中粘贴即可。

 

 

 

14、开启同步并确认同步是否成功

 

使用start slave开启同步功能,使用show slave status\G查看同步是否成功

mysql>start slave;
QueryOK, 0 rows affected (0.00 sec)

mysql>show slave status\G
***************************1. row ***************************
               Slave_IO_State: Waiting formaster to send event
                  Master_Host: 172.16.0.2
                  Master_User: replication
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000007
          Read_Master_Log_Pos: 107
               Relay_Log_File:mysqld-relay-bin.000006
                Relay_Log_Pos: 253
        Relay_Master_Log_File: mysql-bin.000007
             Slave_IO_Running: Yes
            Slave_SQL_Running:Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 107
              Relay_Log_Space: 556
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert:No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 2
1row in set (0.00 sec)

 

 

#IO线程与sql线程都是正常。

 

15、互为主从测试

 

在两台mysql各创建一个库,看两边是否都能进行同步。

分别在主库上执行 create database test01;

从库上执行create database test02;

 

看两台数据库上执行show databases;,看是否都有test01表和test02表。

我的经过测试,双主测试成功。

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Terangkan kolam penampan InnoDB dan kepentingannya untuk prestasi.Terangkan kolam penampan InnoDB dan kepentingannya untuk prestasi.Apr 19, 2025 am 12:24 AM

Innodbbufferpool mengurangkan cakera I/O dengan data caching dan halaman pengindeksan, meningkatkan prestasi pangkalan data. Prinsip kerjanya termasuk: 1. Bacaan Data: Baca data dari Bufferpool; 2. Penulisan Data: Selepas mengubah suai data, tulis kepada Bufferpool dan menyegarkannya ke cakera secara teratur; 3. Pengurusan cache: Gunakan algoritma LRU untuk menguruskan halaman cache; 4. Mekanisme Membaca: Muatkan halaman data bersebelahan terlebih dahulu. Dengan saiz bufferpool dan menggunakan pelbagai contoh, prestasi pangkalan data dapat dioptimumkan.

Mysql vs Bahasa Pengaturcaraan Lain: PerbandinganMysql vs Bahasa Pengaturcaraan Lain: PerbandinganApr 19, 2025 am 12:22 AM

Berbanding dengan bahasa pengaturcaraan lain, MySQL digunakan terutamanya untuk menyimpan dan mengurus data, manakala bahasa lain seperti Python, Java, dan C digunakan untuk pemprosesan logik dan pembangunan aplikasi. MySQL terkenal dengan prestasi tinggi, skalabilitas dan sokongan silang platform, sesuai untuk keperluan pengurusan data, sementara bahasa lain mempunyai kelebihan dalam bidang masing-masing seperti analisis data, aplikasi perusahaan, dan pengaturcaraan sistem.

Belajar MySQL: Panduan Langkah demi Langkah untuk Pengguna BaruBelajar MySQL: Panduan Langkah demi Langkah untuk Pengguna BaruApr 19, 2025 am 12:19 AM

MySQL bernilai belajar kerana ia adalah sistem pengurusan pangkalan data sumber terbuka yang sesuai untuk penyimpanan data, pengurusan dan analisis. 1) MySQL adalah pangkalan data relasi yang menggunakan SQL untuk mengendalikan data dan sesuai untuk pengurusan data berstruktur. 2) Bahasa SQL adalah kunci untuk berinteraksi dengan MySQL dan menyokong operasi CRUD. 3) Prinsip kerja MySQL termasuk seni bina klien/pelayan, enjin penyimpanan dan pengoptimum pertanyaan. 4) Penggunaan asas termasuk membuat pangkalan data dan jadual, dan penggunaan lanjutan melibatkan menyertai jadual menggunakan Join. 5) Kesilapan umum termasuk kesilapan sintaks dan isu kebenaran, dan kemahiran debugging termasuk menyemak sintaks dan menggunakan perintah menjelaskan. 6) Pengoptimuman prestasi melibatkan penggunaan indeks, pengoptimuman penyata SQL dan penyelenggaraan pangkalan data yang tetap.

Mysql: Kemahiran penting untuk pemula untuk menguasaiMysql: Kemahiran penting untuk pemula untuk menguasaiApr 18, 2025 am 12:24 AM

MySQL sesuai untuk pemula untuk mempelajari kemahiran pangkalan data. 1. Pasang alat pelayan dan klien MySQL. 2. Memahami pertanyaan SQL asas, seperti SELECT. 3. Operasi data induk: Buat jadual, masukkan, kemas kini, dan padam data. 4. Belajar Kemahiran Lanjutan: Fungsi Subquery dan Window. 5. Debugging dan Pengoptimuman: Semak sintaks, gunakan indeks, elakkan pilih*, dan gunakan had.

MySQL: Data berstruktur dan pangkalan data hubunganMySQL: Data berstruktur dan pangkalan data hubunganApr 18, 2025 am 12:22 AM

MySQL dengan cekap menguruskan data berstruktur melalui struktur jadual dan pertanyaan SQL, dan melaksanakan hubungan antara meja melalui kunci asing. 1. Tentukan format data dan taip apabila membuat jadual. 2. Gunakan kunci asing untuk mewujudkan hubungan antara jadual. 3. Meningkatkan prestasi melalui pengindeksan dan pengoptimuman pertanyaan. 4. Secara kerap sandaran dan memantau pangkalan data untuk memastikan pengoptimuman keselamatan data dan prestasi.

MySQL: Ciri dan keupayaan utama dijelaskanMySQL: Ciri dan keupayaan utama dijelaskanApr 18, 2025 am 12:17 AM

MySQL adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pembangunan web. Ciri -ciri utamanya termasuk: 1. Menyokong pelbagai enjin penyimpanan, seperti InnoDB dan Myisam, sesuai untuk senario yang berbeza; 2. Menyediakan fungsi replikasi master-hamba untuk memudahkan pengimbangan beban dan sandaran data; 3. Meningkatkan kecekapan pertanyaan melalui pengoptimuman pertanyaan dan penggunaan indeks.

Tujuan SQL: Berinteraksi dengan Pangkalan Data MySQLTujuan SQL: Berinteraksi dengan Pangkalan Data MySQLApr 18, 2025 am 12:12 AM

SQL digunakan untuk berinteraksi dengan pangkalan data MySQL untuk merealisasikan penambahan data, penghapusan, pengubahsuaian, pemeriksaan dan reka bentuk pangkalan data. 1) SQL Melaksanakan operasi data melalui Pilih, Masukkan, Kemas kini, Padam Penyataan; 2) Gunakan pernyataan membuat, mengubah, drop untuk reka bentuk dan pengurusan pangkalan data; 3) Pertanyaan kompleks dan analisis data dilaksanakan melalui SQL untuk meningkatkan kecekapan membuat keputusan perniagaan.

Mysql for Beginners: Bermula dengan Pengurusan Pangkalan DataMysql for Beginners: Bermula dengan Pengurusan Pangkalan DataApr 18, 2025 am 12:10 AM

Operasi asas MySQL termasuk membuat pangkalan data, jadual, dan menggunakan SQL untuk melakukan operasi CRUD pada data. 1. Buat pangkalan data: createdatabasemy_first_db; 2. Buat Jadual: CreateTableBooks (Idintauto_IncrementPrimaryKey, Titlevarchar (100) NotNull, Authorvarchar (100) NotNull, Published_yearint); 3. Masukkan Data: InsertIntoBooks (Tajuk, Pengarang, Published_year) VA

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa