<commit_before>---
layout: post
title:  "MySQL线上与本地实时同步"
---

### 运行环境：

线上：RDS（内网）+ECS  

本地：xampp

由于本地只能访问ECS，需要在ECS上架设mysql代理：

参考这篇笔记：[http://git.malu.me/MySQL-Proxy/](http://git.malu.me/MySQL-Proxy/)

# mysql线上与本地实现主从同步

### ECS配置（作为主服务器master）:

修改配置文件:

	#vim /etc/my.cnf
    
       [mysqld]
       log-bin=mysql-bin   #[必须]启用二进制日志
       server-id=1         #[必须]服务器唯一ID，默认是1

重启mysql：

	/etc/init.d/mysql restart

在主服务器上建立帐户mysync并授权给slave主机:

	mysql -uroot -h localhost

	mysql> GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'passwd';

	mysql> show master status;    #查看master的状态
	+------------------+----------+--------------+------------------+
	| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
	+------------------+----------+--------------+------------------+
	| mysql-bin.000002 |      532 |              |                  |
	+------------------+----------+--------------+------------------+
	1 row in set (0.00 sec)

	注：执行完此步骤后不要再操作主服务器MYSQL，防止主服务器状态值Position变化

	mysql> show master logs;    #查看master二进制日志位置

    mysql> show variables like 'server_id';   #查看server_id

### 本地xampp配置（作为从服务器slave）：

修改配置文件:

	X:\Xampp\mysql\bin\my.ini   #xampp默认配置文件

    [mysqld]
    log-bin=mysql-bin   #[不是必须]启用二进制日志
    server-id=2         #[必须]服务器唯一ID，默认是1，不要与master一样

配置Slave：

	mysql> change master to  master_host='mysql.malu.me',master_port=3306,master_user='mysync',master_password='<PASSWORD>',master_log_file='mysql-bin.000001',master_log_pos=532;
	
	mysql> start slave;          #启动从服务器复制功能

	注：master_log_pos即为master主机状态里的Position<commit_msg>'update'<commit_after>---
layout: post
title:  "MySQL线上与本地实时同步"
---

### 运行环境：

线上：RDS（内网）+ECS  

本地：xampp

由于本地只能访问ECS，需要在ECS上架设mysql代理：

参考这篇笔记：[http://git.malu.me/MySQL-Proxy/](http://git.malu.me/MySQL-Proxy/)

# mysql线上与本地实现主从同步

### ECS配置（作为主服务器master）:

修改配置文件:

	#vim /etc/my.cnf
    
       [mysqld]
       log-bin=mysql-bin   #[必须]启用二进制日志
       server-id=1         #[必须]服务器唯一ID，默认是1

重启mysql：

	/etc/init.d/mysql restart

在主服务器上建立帐户mysync并授权给slave主机:

	mysql -uroot -h localhost

	mysql> GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'passwd';

	mysql> show master status;    #查看master的状态
	+------------------+----------+--------------+------------------+
	| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
	+------------------+----------+--------------+------------------+
	| mysql-bin.000002 |      532 |              |                  |
	+------------------+----------+--------------+------------------+
	1 row in set (0.00 sec)

	注：执行完此步骤后不要再操作主服务器MYSQL，防止主服务器状态值Position变化

	mysql> show master logs;    #查看master二进制日志位置

    mysql> show variables like 'server_id';   #查看server_id

	mysql> SET GLOBAL server_id=2;            #临时设置server_id，下次重启会失效

### 本地xampp配置（作为从服务器slave）：

修改配置文件:

	X:\Xampp\mysql\bin\my.ini   #xampp默认配置文件

    [mysqld]
    log-bin=mysql-bin   #[不是必须]启用二进制日志
    server-id=2         #[必须]服务器唯一ID，默认是1，不要与master一样

配置Slave：

	mysql> change master to  master_host='mysql.malu.me',master_port=3306,master_user='mysync',master_password='<PASSWORD>',master_log_file='mysql-bin.000001',master_log_pos=532;
	
	mysql> start slave;          #启动从服务器复制功能

	注：master_log_pos即为master主机状态里的Position
{'fraction_non_alphanumeric': 0.2339704069050555, 'fraction_numerical': 0.0188039457459926, 'mean_word_length': 2.129218900675024, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 18, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7386832', 'n_tokens_mistral': 1499, 'n_tokens_neox': 1530, 'n_words': 178}