快,关注米兜Java,一起涨姿势~
热点推荐
- 终于有人将 MySQL 索引讲清楚了
- 深入浅出Nginx,如何做到高并发下的高效处理?如何做到热部署?
- 推荐27个Mybatis-Plus优秀案例
01前言
文章一切从简是米兜的一贯作风,太长的文章阅读起来感觉就费劲。如何使用mysql主从配置?我们就从简单的例子看一看,更加详细的配置可以自行google,这里过一下主从配置且能你快速上手。
MySQL主从复制工作原理图,过一下:
主服务器上面的任何修改都会保存在二进制日志Binary log里面,从服务器上面启动一个I/O thread(实际上就是一个主服务器的客户端进程),连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个Realy log里面。从服务器上面开启一个SQL thread定时检查Realy log,如果发现有更改立即把更改的内容在本机上面执行一遍。
02实验环境
- 两台服务器做配置测试:虚拟机中的 ubuntu (192.168.128.131) 和宿主机 xp (192.168.128.1)
- 分别安装有 mysql。最好版本一样(我的不一样)
- 机子都 ping 得通
03主服务器配置(ubuntu)
配置 mysql
#vi /etc/mysql/my.cnf
[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=1 #[必须]服务器唯一ID,默认是1,一般取IP最后一段
检查 mysql 是否允许远程连接
bind-address = 0.0.0.0 #这样表示允许所有网段连接
进入 mysql 终端
#mysql -uroot -proot
新建 mysql 用户(从服务器用到此账号配置)backup
mysql> GRANT REPLICATION backup ON *.* to 'backup'@'192.168.128.%' identified by 'backup';
刷新一下权限表
mysql> flush privileges;
重启 mysql
#service mysql restart
进入 mysql 终端查看 master 状态
mysql> show master status;
记录 file 和 position 的值,从服务器配置用到。这个时候不要去动主数据库,会影响 position 的值。
04从服务器配置(xp)
配置 mysql 的 my.ini 并重启
[mysqld]
log-bin=mysql-bin #[可选]启用二进制日志
server-id=2
登录 mysql 终端后执行
mysql> change master to master_host='192.168.128.131',
master_user='backup',
master_password='backup',
master_log_file='mysql-bin.000002',
master_log_pos=612;
启动 slave 从库
mysql> start slave;
查看 slave 从库
mysql> show slave statusG;
Slave_IO_Running 和 Slave_SQL_Running 必须都为 Yes 才算成功。
05测试
ubuntu mysql
mysql> create database test_repl;
然后查看 xp mysql 如果出现 test_repl 库则说明主从复制配置成功
mysql> show databases;
06总结
这只是最基本的配置,还有很多配置命令就不折腾了。测试时发现之前库不一致时我在主库里面添加一张表,而从库没有那个库,导致从库 slave 会报错,执行这个命令后重启从库就可以跳过这个错误。
#SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 跳过一个事务
参考地址:
http://uee.me/aWPxL
http://blog.sina.com.cn/s/blog_821512b50101hxod.html
END!
米兜Java
请留下你指尖的温度
让太阳拥抱你
记得这是一个有温度的头条号
print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧! ");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo"点个好看吧!"