MySQL 的 Master-Slave Replication (同步) 是當 Master 資料庫有變動時, 自動同步到 Slave 資料庫。由於 MariaDB 在 RHEL/CentOS 7 開始已經成為預設資料庫, 而且可以完全取代 MySQL, 所以以下也會以 MariaDB 進行設定, 但同樣方法在 MySQL 一樣可以的。
假設已經有兩台 MySQL 伺服器, 以下兩部份分別是 Master 及 Slave 的設定。
Master
開啟 /etc/my.cnf 進行設定, 在 [mysqld] 區塊改成以下這樣, 其中 bind-address 要改成 Master 的 ip; datadir 是資料目錄:
|
[mysqld]
bind-address=192.168.1.100
server-id=1
binlog-ignore-db="mysql"
binlog-format=mixed
log-bin=mysql-bin
datadir=/var/lib/mysql
innodb_flush_log_at_trx_commit=1
sync_binlog=1
|
修改後儲存檔案, 重新啟動 MySQL:
# service restart mysql
接著用 root 登入 MySQL, 建立一個用作同步的帳號, 以下會建立帳號 replication, 密碼是 password, Slave 的 ip 是 192.168.1.101:
|
MariaDB>CREATE USER replication@192.168.1.101;
MariaDB>GRANT REPLICATION SLAVE ON *.*TOreplication@192.168.1.101IDENTIFIED BY'password';
MariaDB>flush privileges;
MariaDB>SHOW MASTER STATUS;
MariaDB>exit;
|
然後要用 mysqldump 匯出資料庫的 .sql 檔, 要放到 Slave 匯入:
# mysqldump –skip-lock-tables –all-databases –user=root –password –master-data > masterdatabase.sql
Slave 設定
開啟 /etc/my.cnf 修改設定, 加入以下內容到 [mysqld] 區塊:
|
[mysqld]
server-id=2
binlog-format=mixed
log_bin=mysql-bin
relay-log=mysql-relay-bin
log-slave-updates=1
read-only=1
|
修改後儲存檔案, 重新啟動 MySQL:
# service restart mysql
用 root 登入 MySQL, 建立資料庫:
|
MariaDB>create database database-name;
MariaDB>exit;
|
將在 Master 用 mysqldump 建立的 masterdatabase.sql 匯入:
mysql -u root -p database-name < masterdatabase.sql
匯入資料後, 再次用 root 登入 MySQL, 執行以下 SQL 指令, 以下的 MASTER_HOST 改為 Master 的 ip, 而 MASTER_LOG_FILE 及 MASTER_LOG_POS 是在 Master 上在 MySQL 執行 “SHOW MASTER STATUS;” 的結果:
|
MariaDB>CHANGE MASTER TOMASTER_HOST='192.168.1.100',MASTER_USER='replication',MASTER_PASSWORD='password',MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=500;
MariaDB>START SLAVE;
MariaDB>SHOW SLAVE STATUS\G;
|
現在 Slave 已經可以同步, 要查詢 Slave 的狀態, 可以登入 MySQL 用以下指令檢查:
|
MariaDB>START SLAVE;
MariaDB>SHOW SLAVE STATUS\G;
|
相关推荐
在MySQL中,**主从复制(Master-Slave Replication)**是一种非常重要的数据备份方式,通过它可以在多台服务器之间实现数据的同步。这种方式不仅可以用于数据备份,还可以用于读写分离,从而提高系统的整体性能。 #...
MySQL的主从复制是数据库高可用性和数据冗余的一种常见实现方式,它允许数据从一个服务器(主服务器)同步到一个或多个其他服务器(从服务器)。这种架构在处理大量读取操作、提供故障切换能力以及分布式系统中尤其...
### MySQL 5.5 Master-Slave (Replication) 配置详解 #### 一、基础知识简介 在深入了解具体的配置步骤之前,我们首先简要回顾一下MySQL中的Master-Slave复制机制的基础概念。 - **主从复制(Master-Slave ...
此外,还可以借助第三方工具如`pt-online-schema-change`或`mysql-replication-monitor`进行更复杂的监控和自动化故障切换。 6. **冲突处理**:在主主复制环境中,如果两个节点同时对同一数据进行修改,可能会出现...
在MySQL数据库系统中,主从复制(Master-Slave Replication)是一种常用的数据冗余和负载均衡策略。这种模式允许数据从一个主服务器(Master)实时同步到一个或多个从服务器(Slave)。当主服务器上的数据发生变化时...
MySQL的Master-Slave架构是一种常见的数据库高可用性和负载均衡解决方案。它允许数据从一个主服务器(Master)实时同步到一个或多个从服务器(Slave)。在这种架构中,所有的写操作都在主服务器上执行,而从服务器则...
Master-Slave的数据库机构解决了很多问题,特别是read/write比较高的web2.0应用: 1、写操作全部在Master结点执行,并由Slave数据库结点定时(默认60s)读取Master的bin-log 2、将众多的用户读请求分散到更多的...
mysql> grant replication slave on *.* to 'sree'@'%' Refresh permissions mysql> flush privileges mysql> show master status; | File | Position | master-bin.000004 | 120 Slave configuration =...
MySQL-MM (Multi-Master Replication Manager) 是一种用于MySQL数据库的高可用性和负载均衡解决方案,它支持多主复制,允许数据在多个主节点之间双向同步。以下是对MySQL-MMM安装的详细步骤和基本配置的说明。 首先...
MySQL复制(replication)是一种将数据从一个MySQL服务器(主服务器)实时同步到另一个或多个服务器(从服务器)的技术,这种技术有助于实现高可用性、负载均衡和数据备份。在MySQL中,复制主要分为单向异步复制和...
通过以上步骤,可以成功完成MySQL数据库的主从复制配置,实现数据的实时同步,从而提高数据的安全性和系统的可用性。需要注意的是,在实际部署过程中,还需根据具体的环境和需求调整相关配置,确保复制过程的稳定性...
MySQL作为广泛使用的开源关系型数据库管理系统,其复制功能允许数据在多个服务器之间实时同步,提高了数据的安全性和可用性。Python作为强大的编程语言,通过各种库与MySQL进行交互,其中PyMySQL就是一种常用的接口...
MySQL复制主要基于异步模式,这意味着主服务器(Master)上的更改不会立即传播到从服务器(Slave),而是通过二进制日志(Binary Log)记录并随后传输。以下是复制过程的关键步骤: 1. **事件记录**:当在主服务器...