MySQL主从服务安装步骤
安装MySQL
安装epel源和remi源
安装MySQL
yum install -y --enablerepo=remi mysql-libs mysql-devel mysql mysql-server
创建MySQL服务所需的目录
mkdir -p /opt/data/mysql && chown -R mysql:mysql /opt/data/mysql
mkdir -p /var/log/mysql && chown -R mysql.mysql /var/log/mysql
将下列代码替换/etc/my.cnf
[mysqld]
user = mysql
bind-address = 10.0.0.104 #监听IP
port = 3306 #监听端口
character_set_server = utf8 #默认字符集编码
max_connect_errors = 100000
max_connections = 500
server-id = 1000
skip_name_resolve
datadir = /opt/data/mysql
log-error = /var/log/mysql/mysql-error.log
socket = /var/lib/mysql/mysql.sock
pid-file = /var/run/mysqld/mysqld.pid
back_log = 2000 #创建TCP连接时,允许的最大同时未完成的连接个数(主要适用于短连接场景)
binlog-format = MIXED #Binlog写入格式,共有ROW/STATEMENT/MIXED三种可选。一般使用MIXED
log-bin = /opt/data/mysql/mysql-bin.log #Binlog日志保存路径
expire_logs_days = 3 #Binlog保留时间(单位:天)
max_binlog_size = 100M #每个binlog日志大小
binlog_cache_size = 4M #binlong缓存大小
max_binlog_cache_size = 512 #最大binlog缓存大小
symbolic-links = 0
修改MySQL数据安装路径
mysql_install_db --user=mysql --datadir=/opt/data/mysql
这里的--datadir
路径和/etc/my.cnf
里参数datadir
一致
启动MySQL
service mysqld start
创建新的授权帐号root
grant all on *.* to 'root'@'%' with grant option;
flush privileges;
清理垃圾帐号
delete from mysql.user where user = '';
delete from mysql.user where host = '::1';
flush privileges;
数据库主从配置
配置主从需要特注意一点,就是主库和从库配置文件里的参数server-id
必须都保持唯一
主库server-id:
从库server-id:
创建主从同步帐号
grant replication slave, replication client on *.* to 'replication'@'%' identified by '123456';
导出主库
mysqldump -h10.0.0.104 -uroot -p --all-databases --master-data=2 --routines --events --quick> 10.0.0.104.sql
-
--master-data=2
表示需要记录导出数据当时主库的binlog位置 -
--routines
表示导出存储过程(可视实际库表决定是否使用) -
--events
表示导出事件(可根据实际库表决定是否使用) -
--quick
表示让服务端不将结果集一次发送,而是分批发送,可减轻压力
另外,加上--master-data
后默认是锁库的,可确保数据一致性,即导出数据和binlog
位置的一致。
对于Innodb引擎,可增加--single-transaction
取消锁库并利用Innodb事务特性确保数据一致
将导出的数据库导入到从库
mysql -uroot < 10.0.0.104.sql
设置同步主库参数
登录到从库
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=277, master_host='10.0.0.104', master_port=3306, master_user='replication', master_password='123456';
上面MASTER_LOG_FILE
,MASTER_LOG_POS
参数可以从导出主库的sql语句头部找到。
检查slave同步的参数信息是否正确
show slave status;
开始同步
start slave;
检查同步是否正常
show slave status;
如果上图中Slave_IO_Running
和Slave_SQL_Running
两个参数状态都为Yes,则说明同步正常
另可通过监控工具来监控这两个参数状态是否都为YES,来判断从库是否同步正常