环境、版本
centos 7.2 mysql5.7.13
mysql Master 操作
下载软件包
cd /opt/soft wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.13-linux-glibc2.5-x86_64.tar.gz --no-check-certificate
安装
tar -xvf /opt/soft/mysql-5.7.13-linux-glibc2.5-x86_64.tar.gz -C /usr/local/ mv mysql-5.7.13-linux-glibc2.5-x86_64 mysql mkdir -p /data/mysql #数据目录 mkdir -p /data/log/mysql #日志目录 groupadd mysql useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql chown -R mysql:mysql /user/local/mysql chown -R mysql:mysql /data/mysql/ chown -R mysql:mysql /data/log/ ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql #初始化数据库,完成后会生成一个临时密码,注意保存 ./bin/mysql_ssl_rsa_setup --datadir=/data/mysql #数据库加密
常规配置
vi /etc/my.cnf
[mysql] default-character-set=utf8 [mysqld] default-storage-engine=INNODB character_set_server=utf8
log-bin = /data/mysql/binlog/mysql-bin.log #单独设置binlog 日志路径,最好与数据目录分开,设置到不同磁盘分区,这样提高IO效率
server-id=1 #服务器唯一标识,启动binlog日志就必须设置唯一id ,否则无法启动
log_bin_index=/data/mysql/binlog/mysql-bin.index
binlog-format=MIXED #主从同步采用此种格式的binlog
[mysqld_safe]
log-error = /data/log/mysql/error.log #增加错误日志,当数据库无法启动等问题时会产生错误日志,通过日志来排查问题
mysql 命令加环境变量
echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile bash /etc/profile
通过初始密码登录改一个新密码
mysql -uroot -p set password=password("密码"); flush privileges;
systemctl enable mysql 开机自启
主从同步配置
vi /etc/my.cnf server-id=1 log_bin=master-bin log_bin_index=master-bin.index binlog_do_db=test #备注: #server-id 服务器唯一标识。 #log_bin 启动MySQL二进制日志,即数据同步语句,从数据库会一条一条的执行这些语句。 #binlog_do_db 指定记录二进制日志的数据库,即需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可。 #binlog_ignore_db 指定不记录二进制日志的数据库,即不需要复制的数据库名,如果有多个数据库,重复设置这个选项即可。 #其中需要注意的是,binlog_do_db和binlog_ignore_db为互斥选项,一般只需要一个即可
创建从服务器权限
[root@localhost mysql]# mysql -uroot -p Enter password: #创建从数据库的masterbackup用户和权限 mysql> grant replication slave on *.* to masterbackup@'192.168.17.%' identified by '123456'; #备注 #192.168.17.%通配符,表示0-255的IP都可访问主服务器,正式环境请配置指定从服务器IP #若将 192.168.17.% 改为 %,则任何ip均可作为其从数据库来访问主服务器 #退出mysql mysql> exit; service mysql restart mysql -uroot -p show master status; #记录pos 位置,和日志文件名字
mysql Backup 操作
下载,安装,常规配置同上
主从配置
vi /etc/my.cnf server-id=2 relay-log=slave-relay-bin relay-log-index=slave-relay-bin.index
启动同步
mysql -uroot -p
change master to master_host='192.168.1.1',master_port=3306,master_user='masterbackup',master_password='123456',master_log_file='master-bin.000004',master_log_pos=154;
start slave
show slave statusG; #查看状态是否正常
master_log_file,master_log_pos 为在主上执行show master status命令查看获得信息
show slave status;G 查看状态如下全为yes 即可,否则配置有问题
Slave_SQL_Running: Yes
Slave_IO_Running: Yes
测试
登录mysql 主 选择test 数据,创建如下表 create table tb_test(ID varchar(36) primary key comment '主键ID',MEMO varchar(500) not null comment '信息'); insert into tb_test(ID,MEMO) values('1','one test');
后期增加新的要同步数据库
1、直接在master 配置文件上配置要增加的数据库名称,
2、授权从数据库能够访问同步的新数据库
3、停止从的同步服务,重新执行 change master to master_host='192.168.1.1',master_port=3306,master_user='masterbackup',...命令
4、start slave
5、show slave status;
更改binlog 日志格式
无需重启mysql服务
主库
set global binlog_format='mixed';
vi /etc/my.cnf
binlog-format=MIXED