mysql主从配置

Posted 猥琐熊花子酱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql主从配置相关的知识,希望对你有一定的参考价值。

mysql主从配置

主服务器设置

1.首先创建一个从服务器可以连接的用户,并授予权限(一般只需要读的权限就够了)

# mysql -u root -p
# 允许本地 IP 访问 localhost, 127.0.0.1
# insert into mysql.user(Host,User,Password) values(\'localhost\',\'zhouz\',password(\'1234\'));
# 允许外网 IP 访问
# insert into mysql.user(Host,User,Password) values(\'%\',\'zhouz\',password(\'1234\'));
# 刷新授权
# flush privileges;
# 创建数据库
# create database cmdb_v2 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# 授予用户通过外网IP对于该数据库的全部权限
# grant all privileges on `zhouzdb`.* to \'zhouz\'@\'%\' identified by \'1234\';
# 授予用户在本地服务器对该数据库的全部权限
# grant all privileges on `cmdb_v2`.* to \'zhouz\'@\'%\' identified by \'1234\';
# 刷新权限
# flush privileges;

2.找到主数据库的配置文件my.cnf(或者my.ini),我的在/data/mysql56/my.cnf,添加如下两行

log_bin = mysql_bin #开启二进制日志
server_id = 1 #设置server-id

如果没有找到配置文件

查看mysql默认读取my.cnf的目录

如果没有设置使用指定目录的my.cnf,mysql启动时会读取安装目录根目录及默认目录下的my.cnf文件。

/etc/my.cnf, /etc/mysql/my.cnf, /usr/local/etc/my.cnf, ~/.my.cnf 这些就是mysql默认会搜寻my.cnf的目录,顺序排前的优先。 如果这些目录下面都没有,就自己创建一个,或者从别的地方复制一个

命令
mysql --help|grep \'my.cnf\'

输出
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

这是我的my.cnf全部内容

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]

log_bin = mysql_bin #开启二进制日志
server_id = 1 #设置server-id
binlog_do_db = hd #需要复制的数据库名
binlog_ignore_db = mysql #不需要复制的数据库名
binlog_ignore_db = information_schema #不需要复制的数据库名
binlog_ignore_db = performance_schema #不需要复制的数据库名
max_allowed_packet = 20M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

3.重启mysql,然后查看主服务器二进制文件名与位置

show master status;

File就是二进制文件名

position就是位置

到此为止,我们需要配置主从,主这边所需要的所有东西都拿到了

这个时候

分别的服务器ip,mysql的账号和密码,主服务器的二进制文件名和位置

从服务器设置

1.同样找到从服务器的配置文件,只需要添加server_id 一行就行了

server_id = 2 #设置server-id,这里的id不能和主的一样

2.重启服务器,进入mysql,执行下面的语句,等号后面后换成我们从服务器拿到的数据

CHANGE MASTER TO
MASTER_HOST=\'113.111.111.111\',
MASTER_USER=\'root\',
MASTER_PASSWORD=\'root\',
MASTER_LOG_FILE=\'mysql_bin.000001\',
MASTER_LOG_POS=442414;

3.如果没有错误,我们的主从就搭建完成了

4.我们执行start slave;开启主从

start slave;

5.执行 SHOW SLAVE STATUS\\G可以查看主从是否运行正常

如图,两个必须都为yes才算正常,这时可以随便更改下主mysql的数据,不错意外,从服务器应该会自动同步过来了

 SHOW SLAVE STATUS\\G

注意事项

1.当配置完成Slave_IO_Running、Slave_SQL_Running不全为YES时,show slave status\\G信息中有错误提示,可根据错误提示进行更正。

2.Slave_IO_Running、Slave_SQL_Running不全为YES时,大多数问题都是数据不统一导致。

3.两台数据库都存在db数据库,而第一台MySQL db中有tab1,第二台MySQL db中没有tab1,那肯定不能成功。

4.已经获取了数据的二进制日志名和位置,又进行了数据操作,导致POS发生变更。在配置CHANGE MASTER时还是用到之前的POS。

5.stop slave后,数据变更,再start slave。出错。更正方法重新执行一遍CHANGE MASTER就好了。

以上是关于mysql主从配置的主要内容,如果未能解决你的问题,请参考以下文章

Mysql主从配置,实现读写分离

mysql主从配置,读写分离

MySQL主从复制与读写分离配置及实操

Mysql主从配置,实现读写分离

centos 5.4中mysql主从同步配置方法

Mysql主从配置和跳过事务