Rumah pangkalan data tutorial mysql MySQL数据库同步_MySQL

MySQL数据库同步_MySQL

Jun 01, 2016 pm 01:47 PM
Penyegerakan pangkalan data Operasi pangkalan data ya

bitsCN.com

MySQL 的数据同步,在 MySQL 官方网站文档上,叫 Replication 字面是重作的意思,意译就是同步了。其实,MySQL 的同步,并不是使用同步 sync 这个单词而是用重作 replication,很准确表明了 MySQL 数据库操作的实质,是作同样的操作,或叫重作同样的操作,以保持主数据库服务器 master 与 从属服务器 slave 之样的数据保持一致。replication 就是有重复,重作的意思。
MySQL 为了实现 replication 必须打开 bin-log 项,也是打开二进制的 MySQL 日志记录选项。
MySQL 的 bin log 二进制日志,可以记录所有影响到数据库表中存储记录内容的 sql 操作,如 insert / update / delete 操作,而不记录 select 这样的操作。因此,我们可以通过二进制日志把某一时间段内丢失的数据可以恢复到数据库中(如果二进制日志中记录的日志项,包涵数据库表中所有数据,那么,就可以恢复本地数据库的全部数据了)。 而这个二进制日志,如果用作远程数据库恢复,那就是 replication 了。这就是使用 replication 而不用 sync 的原因。这也是为什么要设置 bin-log = 这个选项的原因。
在同步过程中,最重要的同步参照物,就是同步使用那一个二进制日志文件,从那一条记录开始同步。
下面,我们来讲解最核心的过程:
首先,你应该有两个或两个以上的 MySQL 数据库服务器,版本最好是在 3.3 以上 (当然,两个服务器不一定是两台机器,一台机器上安装两个 MySQL 服务是可以的,同时,如果你对 MySQL replication 原理十分精通的话,你甚至可以在一个 MySQL 服务的两个不同数据库 database 之间作同步,看有没有需要了)说明: 这两个服务器一般设置一个为主服务器,或叫源服务器, master mysql server, 另一台或其他多台就是 replication slave 同步从服务器了。一台 slave 与多台 slave 设置方法是一样的,这样你就可以作类似数据库集群了。
设置可访问 MySQL 帐号,操作以英文为准。
MySQL 帐号一般设置为限定 IP 访问,以保障安全性
MySQL 帐号一般在 master 与 slave 设置为相同帐号,同时是远程可访问
特别注意,如果你用 Linux / Unix 操作系统,那一定要注意一下防火墙 firewall 有没有限制 MySQL 远程访问,如果是,最好是打开远程访问端口,并作好访问 IP 限制
由于 my.cnf 中要明文存储 MySQL 帐号密码,请注意保护 my.cnf 不让其他用户访问到(看来要向 MySQL 说明下以后用密码存 passwd)。
第三步,当然是设置两个服务器要同步的数据库为同样的数据库了。
这里有一些技巧,包括 mysql 的 sql 指令说明下。
方法之一,就是英文说明中说的,先锁定数据库读写功能 ( 其实最好是停止 mysqld 服务,再作备份) 然后用 tar 备份数据库目录,转到 slave 服务器相同数据目录中。
方法之二,使用 mysql studio 这样的实用工具,直接使用 mysql studio 的 backup database 工具把数据库同步
以上两种方法都是 master 数据库中有不少数据记录,按上两 种方法得到 master 与 slave 有相同数据库与数据记录。 而第三种方法,则是适合于新建数据库的情况,特别适合于 master 与 slave 在 my.cnf 已经设置好 replication 关系 (但 未指定 database 同步数据库 ) 的情况: 这就是使用 mysql 的 sql 语句 load table from master 与 load data from master;
load table from master 可以从 master 数据库把表结构复制到 slave 数据库中,这样可以建立同步的表。
load data from master 是从 master 数据库把数据导入到 slave 数据表中,条件是 master 从一开始安装运行就使用了 bin-log 参数而保存有二进制日志
接下来就是配置 master 与 slave 的 my.cnf 文件,使得 replcation 能有合适的启动参数以支持数据同步
技巧: 如果你使用 win2k 的 mysql 那么,你可以下载 mysql.com 出的官方 mysql administrator 实用程序,直接在 mysql administrator 中即可配置 master 与 slave ,同时也可以配置 query-cache 。
在 master 的 my.cnf(如果是 win32 那就是 my.ini)增加
[mysqld]
log-bin =
server-id=1
注意,上面的 log-bin = 中的 等号 = 是不可少的。
在 slave 的 my.cnf 修改
[mysqld]
server-id=2 # 如果有多个 slave 就改为不重复的 id 就好,在mysql 4.1 中,这个已经取消了
master-host=10.10.10.22
master-user=backup #同步用户帐号
master-password=1234
master-port=3306
master-connect-retry=60 #预设重试间隔60秒
replicate-do-db=test # 告诉slave只做 test 数据库的更新
bin-log =
 
 
 
检查 master 与 slave 配置状态,使用 show master status; 与 show slave status; 这两个 SQL 指令即可在 master 与 slave 查看配置状态。这里有两个状态变量十分重要
mysql > SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File   | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73  | test   | manual,mysql  |
+---------------+----------+--------------+------------------+
注意 File 是 mysql-bin.003 而 position 是 73
这个文件是对 test 这个 数据库的二进制日志记录,记录数据变化的当前记录条数是 73
前面我们说过,二进制日志记录着某个数据库所有数据记录变化的 sql 操作语句,如 insert / update / delete 等,正是因为如此,在 slave 同步 mysql 数据库操作时,其实是读取master 中这个 mysql-bin.003 二进制日志中的 sql 操作,同在 slave 中执行这些 sql 操作,所以,同步成功有以下几个条件:
master 与 slave 有相同的数据库表结构,最好 database name 也一样(可以设置为不一样的 database name)
master 与 slave 有相同的初始数据记录,保证同步操作开始后两者数据一致
master 必须使用 bin-log 二进制日志记录(推荐 slave 也使用 bin-log)
slave 是从 master 的 bin-log 是读取 sql 记录来同步,所以,从哪一条 log 开始读取很重要(下面的第 7 条操作,就是保证 slave 能与 master 保持相同的记录读取,并读取正确的 bin-log 日志文件)
在 slave 执行下面 sql 操作
mysql> CHANGE MASTER TO
->  MASTER_HOST=master_host_name,
->  MASTER_USER=replication_user_name,
->  MASTER_PASSWORD=replication_password,
->  MASTER_LOG_FILE=recorded_log_file_name,
->  MASTER_LOG_POS=recorded_log_position;    
这里,把 上面的 redcorded_log_file_name 改为 mysql-bin.003 而 recorded_log_position 改为 73 (特别注意,这是关系关键)。
linux 下的 mysql 与 win2k 下的 MySQL 作 replication 会有什么技巧:
注意 Linux 下有大小写区分,而 win2k 下没有。所以最好使用 mysqldump 方法来让两个数据库初始化同步,而不能使用 tar 方式直接 copy 数据库表文件。使用 mysql studio 来作 database backup 也不错
注意 win2k 下的 mysql 配置文件是 c:my.ini。你可以使用 mysql administrator 0.9 这个图型界面的实用工具来设置。
如果 win2k 下的 mysql 为 master , 一定要注意 show master status 中显示出来的结果。
win2k 下的 mysql 为 slave 时,注意不要把同步时间周期设置太长。
实战
环境配置
操作系统:linux
MySQL:5.14
主服务器A IP:192.168.1.2(假设)
从服务器B IP:192.168.1.3(假设)
同步数据库: test(用于测试,两台服务器初始数据一致) 
主服务器(master)设置
新建一个用于备份的用户(直接用root用户也可以):
GRANT FILE ON *.* TO backup@192.168.1.3 IDENTIFIED BY ‘123456’;

编辑“/etc/my.cnf”(不同服务器可能路径不同)文件,在该文件添加以下内容:
server-id=1
#设置服务器id,主从服务器要不同
log-bin=mysqllog
#启用二进制变更日志(即把所有对数据进行操作的SQL命令以二进制格式记入日志)
#其中mysqllog是日志文件的名称,日志的文件名是mysqllog.n,其中n是一个6位数字的整数。
binlog-do-db=test
#指定需要启用二进制变更日志的数据库"test"
binlog-ignore-db = mysql
#指定不需要启用二进制变更日志的数据库"mysql"

重启mysqld服务,可以用mysql命令:SHOW MASTER STATUS;查看“启用二进制变更日志”情况 
从服务器(slave)设置
编辑“/etc/my.cnf”(不同服务器可能路径不同)文件,在该文件添加以下内容:

server-id=2
#设置服务器id,主从服务器要不同
replicate-do-db=test
#指定需要从master同步过来的数据库"test"
replicate-ignore-db = mysql
#指定不需要从master同步过来的数据库"mysql"

#设置master服务器的IP地址、登陆用户、密码、端口
master-host=192.168.1.2
master-user=backup
master-password=123456
master-port=3306

master-connect-retry=60
#连接master服务器失败后重试的延迟时间
slave-skip-errors=all
#跳过所有错误继续执行同步工作
log-slave-updates
#启用从属服务器上的日志同步功能 
注意:如果从服务器上存在master.info文件(如:/var/lib/mysql/master.info),要使以上配置选项生效,在重启mysqld服务前必须删除该文件。
重启mysqld服务,可以用mysql命令:SHOW SLAVE STATUS;查看同步情况
从数据库的相关命令:
slave st; slave start ; 开始停止从数据库。
show slave statusG; 显示从库正读取哪一个主数据库二进制日志 
成功完成以上配置后,在主服务器A的test库里添加数据或删除数据,在从服务器B的test库里马上也能看到相应的变更。两台服务器的同步操作可以说是瞬间完成的。

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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 rangka kerja CodeIgniter4 dalam php? Bagaimana untuk menggunakan rangka kerja CodeIgniter4 dalam php? May 31, 2023 pm 02:51 PM

PHP ialah bahasa pengaturcaraan yang sangat popular, dan CodeIgniter4 ialah rangka kerja PHP yang biasa digunakan. Apabila membangunkan aplikasi web, menggunakan rangka kerja sangat membantu Ia boleh mempercepatkan proses pembangunan, meningkatkan kualiti kod dan mengurangkan kos penyelenggaraan. Artikel ini akan memperkenalkan cara menggunakan rangka kerja CodeIgniter4. Pasang rangka kerja CodeIgniter4 Rangka kerja CodeIgniter4 boleh dimuat turun dari laman web rasmi (https://codeigniter.com/). Bawah

Cara menggunakan Panel Pagoda untuk pengurusan MySQL Cara menggunakan Panel Pagoda untuk pengurusan MySQL Jun 21, 2023 am 09:44 AM

Pagoda Panel ialah perisian panel berkuasa yang boleh membantu kami menggunakan, mengurus dan memantau pelayan dengan cepat, terutamanya perniagaan kecil atau pengguna individu yang sering perlu membina tapak web, pengurusan pangkalan data dan penyelenggaraan pelayan. Di antara tugas-tugas ini, pengurusan pangkalan data MySQL adalah tugas penting dalam banyak kes. Jadi bagaimana untuk menggunakan panel Pagoda untuk pengurusan MySQL? Seterusnya, kami akan memperkenalkannya langkah demi langkah. Langkah 1: Pasang Panel Pagoda Sebelum mula menggunakan Panel Pagoda untuk pengurusan MySQL, anda perlu memasang Panel Pagoda terlebih dahulu.

Cara menggunakan skrip PHP untuk melaksanakan operasi pangkalan data dalam persekitaran Linux Cara menggunakan skrip PHP untuk melaksanakan operasi pangkalan data dalam persekitaran Linux Oct 05, 2023 pm 03:48 PM

Cara menggunakan PHP untuk melaksanakan operasi pangkalan data dalam persekitaran Linux Dalam aplikasi web moden, pangkalan data adalah komponen penting. PHP ialah bahasa skrip sebelah pelayan yang popular yang boleh berinteraksi dengan pelbagai pangkalan data. Artikel ini akan memperkenalkan cara menggunakan skrip PHP untuk operasi pangkalan data dalam persekitaran Linux dan menyediakan beberapa contoh kod khusus. Langkah 1: Pasang Perisian dan Ketergantungan yang Diperlukan Sebelum memulakan, kita perlu memastikan bahawa PHP dan kebergantungan yang berkaitan dipasang dalam persekitaran Linux. Biasalah

Cara menggunakan thinkorm untuk meningkatkan kecekapan operasi pangkalan data Cara menggunakan thinkorm untuk meningkatkan kecekapan operasi pangkalan data Jul 28, 2023 pm 03:21 PM

Cara menggunakan thinkorm untuk meningkatkan kecekapan operasi pangkalan data Dengan perkembangan pesat Internet, semakin banyak aplikasi memerlukan sejumlah besar operasi pangkalan data. Dalam proses ini, kecekapan operasi pangkalan data menjadi sangat penting. Untuk meningkatkan kecekapan operasi pangkalan data, kami boleh menggunakan thinkorm, rangka kerja ORM yang berkuasa, untuk melaksanakan operasi pangkalan data. Artikel ini akan memperkenalkan cara menggunakan thinkorm untuk meningkatkan kecekapan operasi pangkalan data dan menggambarkannya melalui contoh kod. 1. Apakah thinkormthi?

Menggunakan PDO untuk Operasi Pangkalan Data: Cara yang Lebih Baik dengan PHP Menggunakan PDO untuk Operasi Pangkalan Data: Cara yang Lebih Baik dengan PHP Jun 21, 2023 pm 01:36 PM

Menggunakan PDO untuk operasi pangkalan data: Cara yang lebih baik dengan PHP Dalam pembangunan web, adalah sangat biasa untuk menggunakan pangkalan data untuk penyimpanan data, pengurusan dan pertanyaan. Sebagai bahasa yang digunakan secara meluas dalam pembangunan Web, PHP secara semula jadi menyediakan banyak kaedah operasi pangkalan data. Dalam PHP, anda boleh menggunakan MySQLi, PDO dan perpustakaan sambungan lain untuk melaksanakan operasi pangkalan data. Antaranya, PDO adalah kaedah operasi pangkalan data yang sangat biasa digunakan dan mempunyai lebih banyak kelebihan berbanding kaedah lain. Artikel ini akan memperkenalkan apa itu PDO

Cara menggunakan Doctrine ORM untuk operasi pangkalan data dalam rangka kerja Symfony Cara menggunakan Doctrine ORM untuk operasi pangkalan data dalam rangka kerja Symfony Jul 29, 2023 pm 04:13 PM

Cara menggunakan DoctrineORM dalam rangka kerja Symfony untuk operasi pangkalan data Pengenalan: Rangka kerja Symfony ialah rangka kerja PHP popular yang menyediakan banyak alat dan komponen berkuasa untuk membina aplikasi web dengan cepat dan mudah. Salah satu komponen utama ialah DoctrineORM, yang menyediakan cara yang elegan untuk mengendalikan operasi pangkalan data. Artikel ini akan memperkenalkan secara terperinci cara menggunakan DoctrineORM untuk melaksanakan operasi pangkalan data dalam rangka kerja Symfony. kita akan

Bagaimana untuk menggunakan fungsi FULL OUTER JOIN dalam MySQL untuk mendapatkan penyatuan dua jadual Bagaimana untuk menggunakan fungsi FULL OUTER JOIN dalam MySQL untuk mendapatkan penyatuan dua jadual Jul 26, 2023 pm 05:45 PM

Cara menggunakan fungsi FULLOUTERJOIN dalam MySQL untuk mendapatkan gabungan dua jadual Dalam MySQL, fungsi FULLOUTERJOIN ialah operasi cantum yang kuat yang menggabungkan cantuman dalam dan cantuman luar. Ia boleh digunakan untuk mendapatkan penyatuan dua jadual, iaitu, menggabungkan semua data dalam dua jadual ke dalam set hasil tunggal. Artikel ini akan memperkenalkan penggunaan fungsi FULLOUTERJOIN dan menyediakan beberapa kod sampel untuk membantu pembaca memahami dengan lebih baik. Fungsi FULLOUTERJOIN

Reka bentuk bahagian belakang PHP: operasi pangkalan data dan amalan interaksi data Reka bentuk bahagian belakang PHP: operasi pangkalan data dan amalan interaksi data Jan 19, 2024 am 10:31 AM

Apabila membangunkan tapak web, aplikasi atau sistem, operasi pangkalan data dan interaksi data adalah penting. Sebagai bahasa pembangunan bahagian belakang yang biasa digunakan, operasi pangkalan data PHP dan keupayaan interaksi data juga sangat berkuasa. Artikel ini akan memperkenalkan beberapa fungsi operasi pangkalan data yang biasa digunakan dan amalan interaksi data dalam PHP. Pada masa yang sama, kami akan menerangkan operasi dan amalan ini dengan contoh kod untuk memudahkan pembaca memahami dan menerapkannya dengan lebih baik. 1. Sambungan pangkalan data Sebelum melakukan operasi pangkalan data, anda perlu menyambung ke pangkalan data terlebih dahulu. Dalam PHP kita boleh gunakan

See all articles