Jadual Kandungan
环境:" >环境:
配置:" >配置:
验证是否配置正确" >验证是否配置正确
测试" >测试
问题?" >问题?
Rumah pangkalan data tutorial mysql Mysql 主从数据库同步(centos篇)_MySQL

Mysql 主从数据库同步(centos篇)_MySQL

Jun 01, 2016 pm 01:21 PM
mysql Penyegerakan pangkalan data pelayan pengguna

CentOS

bitsCN.com

环境:

主服务器:centos 5.2 mysql 5.1.35 源码 IP:192.168.1.22从服务器:centos 5.2 mysql 5.1.35 源码  IP:192.168.1.33

配置:

一、主服务器    1.1、创建一个复制用户,具有replication slave 权限。mysql>grant replication slave on *.* to 'repl'@'192.168.1.22' identified by 'repl';    1.2、编辑my.cnf文件vi /etc/my.cnf
添加
server-id=1
并开启log-bin二进制日志文件
log-bin=mysql-bin
注:需要把默认的server-id=1去掉    1.3、启动mysql数据库mysqld_safe --user=mysql &    1.4、设置读锁mysql>flush tables with read lock;    1.5、得到binlog日志文件名和偏移量mysql>show master status;+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.0000010 |      106|              |                  |
+------------------+----------+--------------+------------------+
    1.6、备份要同步的数据库mysqldump test > test.sql    1.7、解锁mysql>unlock tables; 二、从服务器        2.1、编辑my.cnf文件vi /etc/my.cnf
添加
server-id=2
注:需要把默认的server-id=1去掉    2.2、启动从数据库mysqld_safe --user=mysql &        2.3、对从数据库进行相应设置mysql> change master to
        -> master_host='192.168.1.22'
        -> master_user='repl'
        -> master_password='repl'
        -> master_log_file='mysql-bin.0000010'
        -> master_log_pos=106;
        2.4、启动从服务器slave线程mysql>start slave;执行show processlist命令显示以下进程:mysql>show processlist/G
*************************** 2. row ***************************
         Id: 2
     User: system user
     Host:    
         db: NULL
Command: Connect
     Time: 2579
    State: Has read all relay log; waiting for the slave I/O thread to update it
     Info: NULL
表示slave已经连接上master,开始接受并执行日志         2.5、查看slave线程状态mysql>show slave status;*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.22
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.0000010
          Read_Master_Log_Pos: 106
               Relay_Log_File: centos-relay-bin.000002
                Relay_Log_Pos: 529
        Relay_Master_Log_File: mysql-bin.0000010
             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: 106
              Relay_Log_Space: 830
              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:
1 row in set (0.00 sec)
 

验证是否配置正确

在从服务器上执行show slave status/G;
Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如以上二行同时为Yes 说明配置成功
 

测试

1、在主服务器test数据库中创建user表mysql>use test;
mysql>create table user(id int);
2、在从服务器中查看user表mysql>use test;
mysql> show tables like 'user';
+----------------------+
| Tables_in_test(user) |
+----------------------+
| user                 |    
+----------------------+
1 row in set (0.00 sec)
说明主从数据同步成功。 

问题?

1.在从数据库中查看slave状态时出现The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it)说明方从服务器里my.cnf中的server-id有相同的。解决办法:修改my.cnf里的server-id,并重启数据库服务。my.cnf文件默认有server-id=1 其它说明主服务器my.cnf#binlog-do-db=需要备份的数据库名,可写多行
#binlog-ignore-db=不需要备份的数据库名,可写多行
从服务器my.cnf
# replicate-do-db=test  需要备份的数据库名
# replicate-ignore-db=mysql 忽略的数据库
# master-connect-retry=60 如果从服务器发现主服务器断掉,重新连接的时间差(秒)
以下设置也可直接修改my.cnf配置文件log-bin=mysql-bin
master-host=192.168.1.22
master-user=replmaster-password=repl
master-port=3306

主从服务器同步维护由于各种原因,导致主从数据不一致,在负载低的时候,进行手动同步.在主服务器上执行 mysql>flush tables with read lock;Query OK,rows affected (0.01 sec)mysql>show master status;+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.0000011 |      260|              |                  |
+------------------+----------+--------------+------------------+
在从服务器上执行先得到当前主服务器的二进制文件名和偏移量,执行命令使从服务器与主服务器同步mysql>select master_pos_wait('mysql-bin.0000011','260');
+--------------------------------------------------+
| master_pos_wait('mysql-bin.0000011','260')            |
+--------------------------------------------------+
|  0                                                                   |   
+--------------------------------------------------+
1 row in set (0.01 sec)
同步完成后,在主服务器上执行解锁mysql>unlock tables; 切换主从服务器 当主服务器出现故障时,可将从服务器当主服务器来使用.步骤如下:1、保证所有从数据库都已经执行了relay log中的全部更新,在从服务器中执行stop slave io_thread,用show processlist检查,查看状态是否是Has read all relay log,表示更新完成.mysql>stop slave io_thread;
Query OK,0 affected (0.00 sec)
mysql>show processlist/G;
*************************** 2. row ***************************
     Id: 2
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 4757
  State: Has read all relay log; waiting for the slave I/O thread to update it
   Info: NULL
2、在从服务器上执行stop slave,reset master命令,重置成主数据库mysql>stop slave;
Query OK,0 affected (0.00 sec)
mysql>reset master;
Query OK,0 affected (0.00 sec)

3、删除新的主服务器数据库目录中的master.info和relay-log.info文件,否则下次重启时还会按照从服务器来启动.

bitsCN.com
Kenyataan Laman Web ini
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

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

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menggunakan sandaran dan pemulihan MySQL dalam PHP? Bagaimana untuk menggunakan sandaran dan pemulihan MySQL dalam PHP? Jun 03, 2024 pm 12:19 PM

Membuat sandaran dan memulihkan pangkalan data MySQL dalam PHP boleh dicapai dengan mengikuti langkah berikut: Sandarkan pangkalan data: Gunakan arahan mysqldump untuk membuang pangkalan data ke dalam fail SQL. Pulihkan pangkalan data: Gunakan arahan mysql untuk memulihkan pangkalan data daripada fail SQL.

Bagaimana untuk mengoptimumkan prestasi pertanyaan MySQL dalam PHP? Bagaimana untuk mengoptimumkan prestasi pertanyaan MySQL dalam PHP? Jun 03, 2024 pm 08:11 PM

Prestasi pertanyaan MySQL boleh dioptimumkan dengan membina indeks yang mengurangkan masa carian daripada kerumitan linear kepada kerumitan logaritma. Gunakan PreparedStatements untuk menghalang suntikan SQL dan meningkatkan prestasi pertanyaan. Hadkan hasil pertanyaan dan kurangkan jumlah data yang diproses oleh pelayan. Optimumkan pertanyaan penyertaan, termasuk menggunakan jenis gabungan yang sesuai, membuat indeks dan mempertimbangkan untuk menggunakan subkueri. Menganalisis pertanyaan untuk mengenal pasti kesesakan; gunakan caching untuk mengurangkan beban pangkalan data;

Bagaimana untuk memasukkan data ke dalam jadual MySQL menggunakan PHP? Bagaimana untuk memasukkan data ke dalam jadual MySQL menggunakan PHP? Jun 02, 2024 pm 02:26 PM

Bagaimana untuk memasukkan data ke dalam jadual MySQL? Sambung ke pangkalan data: Gunakan mysqli untuk mewujudkan sambungan ke pangkalan data. Sediakan pertanyaan SQL: Tulis pernyataan INSERT untuk menentukan lajur dan nilai yang akan dimasukkan. Laksanakan pertanyaan: Gunakan kaedah query() untuk melaksanakan pertanyaan sisipan Jika berjaya, mesej pengesahan akan dikeluarkan.

Bagaimana untuk membuat jadual MySQL menggunakan PHP? Bagaimana untuk membuat jadual MySQL menggunakan PHP? Jun 04, 2024 pm 01:57 PM

Mencipta jadual MySQL menggunakan PHP memerlukan langkah berikut: Sambung ke pangkalan data. Buat pangkalan data jika ia tidak wujud. Pilih pangkalan data. Buat jadual. Laksanakan pertanyaan. Tutup sambungan.

Bagaimana untuk menggunakan prosedur tersimpan MySQL dalam PHP? Bagaimana untuk menggunakan prosedur tersimpan MySQL dalam PHP? Jun 02, 2024 pm 02:13 PM

Untuk menggunakan prosedur tersimpan MySQL dalam PHP: Gunakan PDO atau sambungan MySQLi untuk menyambung ke pangkalan data MySQL. Sediakan penyata untuk memanggil prosedur tersimpan. Laksanakan prosedur tersimpan. Proses set keputusan (jika prosedur tersimpan mengembalikan hasil). Tutup sambungan pangkalan data.

Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4 Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4 Dec 09, 2024 am 11:42 AM

Salah satu perubahan utama yang diperkenalkan dalam MySQL 8.4 (keluaran LTS terkini pada 2024) ialah pemalam "Kata Laluan Asli MySQL" tidak lagi didayakan secara lalai. Selanjutnya, MySQL 9.0 mengalih keluar pemalam ini sepenuhnya. Perubahan ini mempengaruhi PHP dan apl lain

Perbezaan antara pangkalan data oracle dan mysql Perbezaan antara pangkalan data oracle dan mysql May 10, 2024 am 01:54 AM

Pangkalan data Oracle dan MySQL adalah kedua-dua pangkalan data berdasarkan model hubungan, tetapi Oracle lebih unggul dari segi keserasian, skalabiliti, jenis data dan keselamatan manakala MySQL memfokuskan pada kelajuan dan fleksibiliti dan lebih sesuai untuk set data bersaiz kecil. ① Oracle menyediakan pelbagai jenis data, ② menyediakan ciri keselamatan lanjutan, ③ sesuai untuk aplikasi peringkat perusahaan ① MySQL menyokong jenis data NoSQL, ② mempunyai langkah keselamatan yang lebih sedikit, dan ③ sesuai untuk aplikasi bersaiz kecil hingga sederhana.

Dilengkapi dengan pemproses siri AMD EPYC 4004, ASUS melancarkan pelbagai produk pelayan dan stesen kerja Dilengkapi dengan pemproses siri AMD EPYC 4004, ASUS melancarkan pelbagai produk pelayan dan stesen kerja Jul 23, 2024 pm 09:34 PM

Menurut berita dari laman web ini pada 23 Julai, ASUS telah melancarkan pelbagai produk peringkat pelayan dan stesen kerja yang dikuasakan oleh pemproses siri AMD EPYC 4004. Nota dari tapak ini: AMD melancarkan platform AM5 dan pemproses siri EPYC 4004 seni bina Zen4 pada bulan Mei, menawarkan sehingga spesifikasi 3DV-Cache 16-teras. Pelayan ASUSProER100AB6 ASUSProER100AB6 ialah produk pelayan yang dipasang di rak 1U yang dilengkapi dengan pemproses siri EPYC Xiaolong 4004, sesuai untuk keperluan IDC dan perusahaan kecil dan sederhana. Stesen kerja ASUSExpertCenterProET500AB6 ASUSExpertCenterProET500AB6 ialah

See all articles