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 status\G;
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 跳过一个事务
linux的mysql安装,mysql获取最近数据,统计mysql条数 php,mysql全连接是什么,宝塔连接mysql,linux mysql 数据库目录