1. Environment
In
192.168.1.202 Database: BILLING
DB Account: root
DB Password:
In
192.168.1.204 Database: BILLING
DB Account: root
DB Password:
We need to replicate the following tables from
192.168.1.204 to
192.168.1.202.
users
plan
profile
2. Steps
Because we need replicate the data from 204 to 202, So, Mysql server in 204 is master, and the 202 is slave.
a. Ssh to 204, Open /etc/mysql/my.cnf mysql configuration file. Make sure the following two lines is uncommented.
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
b. Ssh to 202, Open /etc/mysql/my.cnf mysql configuration file. Make sure it has following lines.
server-id=2
log-slave-updates
read-only=1
replicate-do-db=BILLING
replicate-do-table=BILLING.users
replicate-do-table=BILLING.plan
replicate-do-table=BILLING.profile
relay-log-purge=1
c. Connect to master mysql server, Create a mysql user for replication.
mysql> grant replication slave on *.* to 'rep'@'%' identified by 'rep';
d. Lock the tables on master mysql server, So we can dump the master
server's data and import to slave server. Make master and slave has the
same data.
mysql> flush tables with read lock;
e. Show master status, and record the data.
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
|
mysql-bin.000002 |
228 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
f. Connect to slave server and run the following commands.
Notice, the data of MASTER_LOG_FILE and MASTER_LOG_POS come from step 6. mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.1.204',
-> MASTER_USER='rep',
-> MASTER_PASSWORD='rep',
-> MASTER_LOG_FILE='mysql-bin.000002', -> MASTER_LOG_POS=228; Query OK, 0 rows affected (0.01 sec)
g. Start the slave thread.
mysql> start slave;
h. OK, the replication is completed, Don't forget to unlock the master's tables.
mysql> unlock tables;
3. Start/Stop slave thread by Java code.
We can start/stop the slave thread by java code(actually by JDBC). First create a user with all privileges.
mysql> GRANT ALL PRIVILEGES ON *.* TO slave@"%" IDENTIFIED BY 'slave';
OK, Now, We have a user which use to start/stop slave thread. The following code is how to start/stop slave thread.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Slave {
/**
* @param args
*/
public static void main(String[] args) {
String connString = "jdbc:mysql://192.168.1.202:3306/RMC_BILLING";
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Connection connection = DriverManager.getConnection(connString, "slave", "slave");
PreparedStatement ps = connection.prepareStatement("start slave");
//The next line is used to stop the slave.
//PreparedStatement ps = connection.prepareStatement("stop slave");
int executeUpdate = ps.executeUpdate();
System.out.println(executeUpdate);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
在项目中有这样的需求, 就是想控制定期的slave thread。 在网上找到了http://forums.mysql.com/read.php?26,43705,43705#msg-43705 上面有两种方式。 不过都比较复杂。 后面不知道怎么就突然想到了 是不是可以用jdbc去做。 然后马上写了个Main跑了一下, 果然可以。
参考: http://www.ningoo.net/html/2007/mysql_replication_configuration.html
分享到:
相关推荐
MySQL Replication 是一种数据复制机制,它允许将一个MySQL服务器(主服务器或Master)的数据异步复制到一个或多个其他MySQL服务器(从服务器或Slave)。这种机制主要用于实现数据库负载均衡、提高读取性能以及备份...
MySQL Replication是MySQL数据库系统中的一个重要特性,它允许数据从一个主服务器(master)自动同步到一个或多个从服务器(slaves)。这种技术主要用于数据备份、负载均衡和高可用性设置,确保即使在主服务器出现...
MySql Replication Tutorial,关于MySql Replication 的 PPT
MySQL Replication是一种数据库复制技术,允许数据从一个MySQL服务器(主服务器)实时同步到其他一个或多个MySQL服务器(从服务器)。这种技术对于实现高可用性、负载均衡和数据备份至关重要。以下是对一主多从环境...
MySQL Group Replication 详细搭建部署过程 MySQL Group Replication 是一种基于组的复制技术,用于容错系统中。它由多个服务器(节点)组成,每个节点都可以独立执行事务,而读写事务则会在于 group 内的其他节点...
针对这一情况,提出在现有硬件的基础上利用JDBC规范与MySQL Replication实现数据库集群从而解决数据访问瓶颈。其主要方法是在进行JDBC连接之前实现负载均衡,所有SQL请求由负载均衡器进行统一调度。在数据库端利用...
深入理解MySQL Group Replication MySQL Group Replication是一种高可用性和高性能的解决方案,旨在提供数据库的高可用性和高性能。它是MySQL数据库的一部分,旨在提供高可用性和高性能的解决方案。 背景: 数据库...
- `SET SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;` #### 四、分析二进制日志 文档还提供了如何使用`mysqlbinlog --hexdump`命令来解析二进制日志文件的例子。例如: 1. **查询事件头**: - `#06042020:16:02 ...
MySQL复制(replication)是一种将数据从一个MySQL服务器(主服务器)实时同步到另一个或多个服务器(从服务器)的技术,这种技术有助于实现高可用性、负载均衡和数据备份。在MySQL中,复制主要分为单向异步复制和...
在深入探讨如何通过MySQL Replication实现库名修改与单个表的复制之前,我们先来了解MySQL Replication的基本概念及其工作原理。MySQL Replication是一种数据复制机制,它允许从一台服务器(主服务器)向另一台或多...
MySQL复制(Replication)是MySQL数据库系统中一种强大的功能,它允许数据从一个服务器(主服务器)异步地复制到一个或多个其他服务器(从服务器)。这种架构为高可用性、负载均衡和数据备份提供了基础。 在MySQL ...
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; ``` #### 5. 获取主服务器的二进制日志位置和偏移量 - 使用以下命令获取二进制日志的位置和偏移量: ```sql SHOW MASTER STATUS; ``` ###...
MySQL 5.7版本在复制(Replication)方面引入了多项新特性,这些特性极大地提升了数据库复制的性能、稳定性和可管理性。以下是对这些新功能的详细说明: 1. **GTID(Global Transaction Identifier)全局事务标识符...
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs This error generally occur when we clone the master to slaver. Delete auto.cnf of mysql, and then ...
胖子摸索出来的,Ubuntu上MySQL的Replication配置,的简单记录步骤
mysql> grant replication slave on *.* to 'slave'@'192.168.0.7' identified by '123456'; mysql> flush privileges; // 生效 ``` 2. **MySQL配置文件调整** - 在`/etc/my.cnf`中添加或修改以下配置项: ```...
MySQL的Master-Slave架构是一种常见的数据库高可用性和负载均衡解决方案。它允许数据从一个主服务器(Master)实时同步到一个或多个从服务器(Slave)。在这种架构中,所有的写操作都在主服务器上执行,而从服务器则...