内容目录
要在本地搭建一个数据库,并从多台远程服务器实时同步数据,可以采用以下方案:
方案概述
- 在本地搭建数据库: 安装并配置MySQL数据库。
- 配置远程数据库: 确保远程MySQL数据库允许本地服务器访问。
- 使用MySQL复制(Replication): 配置主从复制,将远程数据库的数据实时同步到本地数据库。
详细步骤
步骤 1:在本地安装和配置MySQL数据库
安装 MySQL:
sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql
配置本地 MySQL:
编辑/etc/mysql/mysql.conf.d/mysqld.cnf
文件,确保以下设置:
[mysqld]
server-id=1
log_bin=mysql-bin
binlog_do_db=your_database_name # 如果有多个数据库,可以重复此行,或者省略以同步所有数据库
重启MySQL服务:
sudo systemctl restart mysql
步骤 2:配置远程数据库
在每个远程数据库服务器上进行如下配置:
编辑/etc/mysql/mysql.conf.d/mysqld.cnf
文件,确保以下设置:
[mysqld]
server-id=unique_server_id # 确保每个服务器的ID唯一
log_bin=mysql-bin
binlog_do_db=your_database_name # 如果有多个数据库,可以重复此行,或者省略以同步所有数据库
为复制用户创建权限:
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
获取二进制日志位置:
SHOW MASTER STATUS;
记下输出的File
和Position
。
步骤 3:配置本地数据库从属(Slave)
在本地服务器上,创建此sh文件,并执行:
# 在本地配置从属
sudo mysql -u root -e "
CHANGE MASTER TO
MASTER_HOST='110.40.61.56',
MASTER_USER='shiran',
MASTER_PASSWORD='zouxinhao',
MASTER_LOG_FILE='mysql-bin.000020',
MASTER_LOG_POS=98794
FOR CHANNEL 'chendu';
START SLAVE FOR CHANNEL 'chendu';
"
对于每个远程数据库,重复上述CHANGE MASTER TO
配置,只需改变MASTER_HOST
和对应的日志位置。
步骤 4:验证复制状态
在本地MySQL服务器上,执行以下SQL语句以检查复制状态:
SHOW SLAVE STATUS \G;
# 检查单个通道:
SHOW SLAVE STATUS FOR CHANNEL 'master1' \G;
确保Slave_IO_Running
和Slave_SQL_Running
都显示为Yes
,且没有错误。
注意事项
- 确保本地服务器和远程服务器之间的网络连接畅通。
- 定期检查复制状态,以确保没有出现延迟或错误。
- 考虑在复制配置中添加SSL加密,以提高安全性。
通过这种方式,您可以在本地服务器上实时同步多个远程MySQL数据库中的数据。如果有更多具体需求或问题,欢迎进一步讨论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容