记录一下mysql/MariaDB的主从设置,因为5.5之后在配置文件中撤销了Master_host, Master_user, Master_password等关键字的支持所以网上查到的很多信息都是错误的用不了。这里根据官方的说明做一下记录. 环境: master:192.168.1.111 CentOS6.5 mysql slave:192.18.1.112 CentOS6.5 mariaDB 配置master上. 1\master上设置bin-log,用于slave同步的时候读取 1.1

vim /etc/my.cnf
#其中修改/添加
server-id=1#1就是master 2^32-1的则为slave.
log-bin=log#这个log为日志名称随便写

binlog-do-db=xxx binlog-do-db=yyy binlog-do-db=zzz#这三个xxx yyy zzz是需要同步数据库名称. binlog-ignore-db=aaa#忽略同步的数据库一般是忽略掉mysql这个库. 以上就是master上配置文件中需要修改的地方. 1.2

#在master 上执行show master status\G

会出现File Position Binlog_Do_Db Binlog_Ignore_Db也就是刚刚设置的一些信息。 特别要注意这里有个File和Position需要记录一下待会儿要用到. 1.3 给同步账号一个权限再重启服务

GRANT REPLICATION SLAVE ON . TO ‘WhichUserDoYouWantToUse’ @ ‘%’ identified by ‘ThisIsPassWord’;

重启服务

service mysqld/mariadb restart
FLUSH TABLES WITH READ LOCK#锁表.

1.4

#配置完slave之后再执行这一步.
UNLOCK TABLES;

配置slave 2.1.1 配置文件中加入

replicate-wild-ignore-table=EXAMPLE_DATABASES.%
#例如, 避免复制 garbage数据库中的数据表的安全的方案是 配置: replicate-wild-ignore-table=garbage.%如果有多个重复此行
replicate-wild-ignore-table=EXAMPLE_DATABASES_FIRST.%
replicate-wild-ignore-table=EXAMPLE_DATABASES_SECOND.%
#这种方案解决了当master做修改之后导致slave找不到表, 或者新增了之后slave中又没有而引起的错误

2.1.2

mysql -u xxx -p yyy
CHANGE MASTER TO
MASTER_HOST=’192.168.111’
MASTER_USER=’WhichUserDoYouWantToUse’,
MASTER_PASSWORD=’ThisIsPassWord’,
MASTER_PORT=3306,
MASTER_LOG_FILE=’ContentShouldLikexxx.0001In1.2FileAbove’,
MASTER_LOG_POS=’ContentShouldLikexxx.0001In1.2PositionAbove’,
MASTER_CONNECT_RETRY=10;

#重启服务
service mysqld/mariadb restart
#进入mysql查看一下状态, 关键是查看Slave_IO_RUNNING和Slave_SQL_Running是否为YES.
#其他根据字面意思就可以知道其他信息
start slave;
show slave status\G

1\在做公司服务器上配置的时候还出现一个小插曲。 slave上配置好之后一直报错说有一个表是read only。起了怪了mysql是直接复制的文件过去, 又没有在mysql中锁表怎么会RO呢,后来登录系统看了看权限,尼玛750,并且是root.mysql。 组不可写,于是立即chown+chmod一下,在restart 一下mysql解决. 2\windows上的mysql默认不区分大小写,而linux下是区分的所以同步的时候如果你的表里面面有类似TableName这样形式的表明就会报xxx不存在,在不修改表的前提下可以把『lower_case_table_name』打开这样就可以了

#查看一下状态
show variables like ‘%case%’;
#修改
vim /etc/my.cnf
#在[mysqld]之后加入
lower_case_table_name=1;
#之后
service mysqld restart

打完收工.