Linux两台服务器mysql数据库同步
2024-08-30 00:54:22
我们在做web系统部署的时候往往涉及到两台甚至多台数据库的备份,为了数据安全考虑(虽然说到底不过是一堆0 1,但是价值千金啊),所以我们还是乖乖做同步把!
1、准备两台Linux服务器(主、从)
2、安装好Mysql
3、在配置文件/etc/my.cnf(MySQL中为mysql.ini)修改开启二进制日志
log-bin=mysql-bin 修改方法:打开配置文件后在 [mysqld]中添加内容: server-id = #确保在整个MySQL集群中唯一 log-bin=/var/log/mysql/mysql-bin.log #日志存放位置 log-bin-index = binlog.index
4、重启mysql服务
service mysql restart
5、查看配置是否正常
show variables like 'log-bin';
6.开始主从复制
第一步:在主服务器中创建一个从服务器中可以登陆的MySQL用户
mysql>GRANT REPLICATION SLAVE ON *.*TO '用户名'@'从服务器ip' IDENTIFIED BY '密码'; mysql>FLUSH PRIVILEGES;
第二步:查看主服务器MySQL二进制文件名和位置
mysql> SHOW MASTER STATUS;
第三步:告知二进制文件名和位置
在从服务器中执行(注意标点符号,最后才是分号)
mysql > CHANGE MASTER TO >MASTER_HOST='主服务器地址', >MASTER_USER='创建的用户名', >MASTER_PASSWORD='密码', >MASTER_LOG_FILE='mysql-bin.000048(根据自己的修改)', >MASTER_LOG_POS=(自己修改);
完成主从复制;
7、测试主从复制
在从服务器中执行
mysql > START SLAVE; #开启复制mysql > SHOW SLAVE STATUS\G; #查看主从复制是否成功
数据库同步成功
当看到Slave_IO_Running: YES、Slave_SQL_Running:
YES才表明状态正常
8、实际测试:
登陆主服务器主MySQL:show database;
登陆从服务器MySQL:show databases;
主数据库进行如下操作:
(1)创建数据库和表
create database test; use test; create table tab1(id int auto_increment,name varchar(),primary key(id)); show databases; show tables;
(2)从数据库也查看数据库和表,看数据是否同步了
9、出错请看
问题一:mysql服务器启动不了
出错:Starting MySQL... ERROR! The server quit without updating PID file
解决办法:找到mysql安装目录下面的data目录,删除mysql-relay-log.index
问题二:不能同步
进入slave服务器,运行:
mysql > show slave status\G; .......
解决办法一:
Slave_SQL_Running: No
1.程序可能在slave上进行了写操作
2.也可能是slave机器重起后,事务回滚造成的.
一般是事务回滚造成的:
解决办法二:
mysql > stop slave; mysql > set GLOBAL SQL_SLAVE_SKIP_COUNTER=; mysql > start slava;
注意:如果实在不行就在从服务器里边执行如下操作
mysql > stop slave; >reset slave; > 重新配置同步(见第六步) >start slave;
至此数据库同步完成!
当你发现自己的才华撑不起野心时,就请安静下来学习吧!
最新文章
- Entity Framework 6 Recipes 2nd Edition(10-5)译 ->; 在存储模型中使用自定义函数
- java-阻塞队列
- 无法导入以下密钥文件: xxxx.pfx,该密钥文件可能受密码保护 的解决方案
- HTTP Status Code [RFC]
- Ruby注意事项
- C语言实现单链表-04版
- java基础2
- C++STL(vector,map,set,list)成员函数整理
- 集中式(SVN)和分布式(Git)版本控制系统的简单比较
- java StringTokenizer
- layer弹框插件使用
- 潭州课堂25班:Ph201805201 爬虫基础 第四课 Requests (课堂笔记)
- 2-scala集合
- 创建自己的OAuth2.0服务端(一)
- Git7:使用Gitlab管理远程仓库
- Kolibri v2.0-Buffer Overflow成功复现
- Qt多线程-QThreadPool线程池与QRunnable
- [Jobdu] 题目1493:公约数
- Java数组的十大方法
- ajax-解决跨域请求(基于js,jQuery的josnp,设置响应头的cors)