公司生产环境某个数据库要在主库已有数据的基础上进行主从复制,涉及生产环境,要慎重,于是先在测试环境测试一下,顺便记录一下操作过程。
主库已存在,内网IP为10.200.9.183,从库准备搭建在10.200.9.188上。
使用的数据库版本为mariadb-10.0.33,下载方式:
wget https://downloads.mariadb.com/MariaDB/mariadb-10.0.33/bintar-linux-x86_64/mariadb-10.0.33-linux-x86_64.tar.gz解压数据库压缩包:
tar -xzvf mariadb-10.0.33-linux-x86_64.tar.gz移动到指定位置:
mv mariadb-10.0.33-linux-x86_64 /data/mariadb-10.0.33备份/etc下默认数据库配置文件:
mv /etc/my.cnf /etc/my.cnf.bak将数据库中的配置文件模板复制到/etc/下
cp support-files/my-innodb-heavy-4G.cnf /etc/my.cnf编辑配置文件
vim /etc/my.cnf更改以下内容
basedir=/data/mariadb-10.0.33 datadir=/data/mariadb-10.0.33/data创建mysql用户:
useradd -s /sbin/nologin -M mysql将mysql所有文件的所属用户和组改为mysql
chown -R mysql:mysql /data/mariadb-10.0.33指定用户、文件路径初始化mysql
./scripts/mysql_install_db --basedir=/data/mariadb-10.0.33 --datadir=/data/mariadb-10.0.33/data/ --user=mysqlmariadb有提供启动脚本,在安装目录中的support-files目录里,文件名为mysql.server,将其复制到/etc/init.d下
cp support-files/mysql.server /etc/rc.d/init.d/mysqld启动mysql
/etc/init.d/mysqld start或者
service mysqld startmysql开机自启设置:
chkconfig --add mysqld chkconfig mysqld on查看mysql是否添加进开机自启列表:
chkconfig --list如下所示,添加成功
登录mysql
/data/mariadb-10.0.33/bin/mysql -u root授权:
grant all privileges on *.* to 'root'@'%' identified by '123456'; grant all privileges on *.* to 'root'@'localhost' identified by '123456'; grant all privileges on *.* to 'root'@'127.0.0.1' identified by '123456';刷新权限:
flush privileges;编辑/etc/profile文件:
vim /etc/profile将以下内容添加进最后一行
export PATH=$PATH:/data/mariadb-10.0.33/bin刷新环境变量
source /etc/profile配置binlog文件名:
log-bin = mysql-bin设置server-id(server-id 必须唯一,不可以和从库重复):
server-id = 1设置主从同步只同步某一个数据库
binlog-do-db = newenergy设置binlog过期时间:
expire_logs_days = 2设置日志格式
binlog_format = mixed statement 保存SQL语句row 保存影响记录数据mixed 前面两种的结合 建议设置为mxed模式IP为从库IP
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@' 10.200.9.188' IDENTIFIED BY 'replpass';刷新权限
FLUSH PRIVILEGES;设置中继日志relay-log
relay-log = relay-bin设置server-id(server-id必须唯一,不可与主库和其他从库冲突):
server-id = 2(2)重启数据库 service mysqld restart
红框中内容需要保留并记录,是从这个地方开始备份的。
因为只同步一个数据库,所以备份这一个数据库即可。
mysqldump -uroot -p123456 newenergy > newenergy.sql建议使用SQL语句“CHANGE MASTER TO ”来修改相关配置,主要修改的内容有:
master_host:master主机IPmaster_port:master数据库的端口master_user:slave连接master用来认证的用户名master_password:slave连接master用来认证的密码master_log_file:master二进制日志的名字master_log_pos:slave开始复制的二进制日志的起始位置后面两个参数master_log_file和master_log_pos的设置内容就是之前在show master status时要求保留的File和Position的内容。 登录slave数据库
mysql -u root -p123456连接主库
CHANGE MASTER TO MASTER_HOST='10.200.9.183',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_LOG_FILE='mysql-bin.000002',master_port=3307,MASTER_LOG_POS=154;如下所示,Slave_SQL_Running和Slave_IO_Running都显示Yes则证明slave成功连接上master。
如果Slave_IO_Running没有显示yes, Last_IO_Error会显示错误原因,如图: 此处表名主从数据库的server-id重复,需要修改其中一个server-id并重启。 这里表示无法连接到主数据库,可能是主库端口没开通,或者IP不可达等原因。检查是否能在从库连接到主库即可。
在主库的newenergy数据库中创建表或者添加字段,在从库能看到即表明同步成功。还可以通过查看Seconds_Behind_Master的值来看同步的延时。
