mysql 主从复制
配置两台mysql服务器
主机: 192.168.139.154
从机: 192.168.80.153
如果复制多个数据库,重复设置这个选项即可:
binlog-ignore-db=db1
replicate-do-db=db2
创建用户(在主库上创建):
GRANT REPLICATION SLAVE,FILE ON *.* TO 'master'@'192.168.139.153' IDENTIFIED BY "1";
flush privileges;
master:从库可以访问的账户
1:从库可以访问的密码
192.168.139.153:从库的ip
更改主机配置 # vi /etc/my.cnf
在[mysqld]下添加如下配置
/etc/my.cnf:
[mysqld]
log-bin=/var/lib/mysql/binlog
#主机id不能重复
server-id=1
#要同步的数据库
binlog-do-db = cmdb
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
设置不同步的数据库(可选择):
binlog-ignore-db = mysql 不同步mysql库和test库
binlog-ignore-db = test
#退出重启mysql
service mysqld restart
从库:
/etc/my.cnf:
[mysqld]
#保证不重复
server-id=2
#要同步的数据库
replicate-do-db=cmdb
#mysql5.5+版本主从复制不支持这些变量,需要在从库上用命令来设置:
#后面两个参数的值与主库保持一致(在主机上show master 查看)
CHANGE MASTER TO MASTER_HOST="192.168.139.154",MASTER_PORT=3306,MASTER_USER="master",MASTER_PASSWORD="1",MASTER_LOG_FILE="binlog.000001",MASTER_LOG_POS=3194;
flush privileges;
#开启主从
start slave;
#查看主从配置信息
show slave status\G;
则成功
最后在主库和从库新建数据库cmdb(表结构数据得一致)
在主库新建表 观察从库同步信息
=========================================(可选)
SHOW VARIABLES LIKE 'server_id';查看配置文件中设置的id
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 0 |
+---------------+-------+
发现server_id没变
既然参数文件不生效,就试试在数据库命令里面设置:
SET GLOBAL server_id=136;
slave start
query ok 主从配置成功
从数据库中数据随着主库数据变化而变化