一.mysql主从同步
方案:一主一从 一主多从 主从(主)从 master slave172.30.13.8 数据库服务 172.30.13.191 数据库服务 slave角色的数据库服务器上一定要有主数据库服务器上的库、表 表结构一致(从数据库服务器一定要有主数据库服务器的库和表) 1.配置master数据库服务器1.1 开启binlog 日志(必须启用)1.2 授权用户可以从 slave 数据库服务器连接自己 有拷贝数据的权限mysql -uroot -p999grant replication slave on *.* to plj@"172.30.13.191" identified by "321";show master status; //查询配置slave时所需的log相关信息1.3 指定自己server_id值 (范围:0-255)[root@mail ~]# cat /etc/my.cnf[mysqld]log-bin=pljserver_id=8[root@mail ~]# service mysql restart 配置slave数据库服务器1 指定自己server_id值2 开启binlog 日志(可选项)[root@svr5 Desktop]# cat /etc/my.cnf [mysqld]log-binserver_id=191[root@svr5 Desktop]# service mysql restart show master status; //查看当前使用的binlog日志信息3 指定自己做谁的从数据库服务器mysql -uroot -p123mysql> change master to -> master_host="172.30.13.8", -> master_user="plj", -> master_password="321", -> master_log_file="plj.000001", -> master_log_pos=120;Query OK, 0 rows affected, 2 warnings (0.08 sec)mysql> mysql> show slave status\G; Slave_IO_Running: No Slave_SQL_Running: Nomysql> start slave;mysql> mysql> show slave status\G; Slave_IO_Running: YES Slave_SQL_Running: YES二、主从同步的工作原理master.info 记录连接主数据库服务器的信息主机名-relay-bin.000001 中继日志sql语句主机名-relay-bin.index 记录已有的中继日志文件名relay-log.info 记录使用的日志文件信息Slave_IO_Running: YES 负责把主数据库服务器binlog 日志里的sql语句,复制到自己本机的relay-bin日志文件里Slave_SQL_Running: YES 负责执行本机的relay-bin日志,文件里的sql语句测试:从数据库服务器能否自动同步主数据库服务器上数据。mysql -h172.30.13.8 -u用户名 -p密码注:change master to ...即可以指定主服务器,也可以用来修改已经指定好的服务器信息三、故障排除1.Slave_IO_Running: NO物理设备未连上防火墙selinux授权信息有误2.Slave_SQL_Running: NO主从库和表结构不一致主必须启用bin-log日志四:指定同步库和表1.授权同步用户时必须是*.*2.在主数据库端设置允许从数据库服务器备份自己哪些库数据;vim /etc/my.cnfbinlog-do-db=name //只让从数据器备份自己的哪个库binlog-ignore-db=name //不让从数据器备份自己的哪个库注:上面两个选项不可以同时使用或,在从数据库服务器端设置自己备份主数据库哪些数据;vim /etc/my.cnfreplicate-do-db=mysql //指定只备份主数据库服务器上的哪个库replicate-ignore-db=mysql //只不备份主数据库服务器上的哪个库二、样例1:主 > 从(主) > 从1.两台主服务器先设置授权(否则开启日志功能后,所设置的内容将同步到从服务器,造成安全隐患)grant replication slave on *.* to user1@"172.30.13.191" identified by "321";grant replication slave on *.* to user2@"172.30.13.192" identified by "321";show master status;(查询正在使用的日志文件和i点)2.两台主服务器开启日志(bin-log)和设置id(server_id=)3.从(主)服务器在my.cnf中添加log-slave-updates语句,此项添加后,将会将同步的slave日志内容同步到本地日志内,否则将无法进行主从从实验4.从服务器配置详见上面主从同步;