1、主库设置
打开my.cnf配置文件
vi /etc/mysql/my.cnf
#键入 /server-id 找到server-id的位置,把以下内容对照设置进去,键入 i,激活输入状态(在[mysqlId]下)
#注意,这里的Master与Slave的server-id不能相同
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100
binlog_do_db = mzm_product #如果需要同时同步多个数据库,请另起一行设置binlog_do_db=需要同步的数据库名称
binlog_do_db = inception_mzm_product
binlog_ignore_db = mysql
cd /var/log/
如果没有mysql目录,新建mysql目录
mkdir mysql
设置权限
chown -R mysql:mysql /var/log/mysql
#授权。允许root用户,从192.168.110.*的IP范围 远程访问A主mysql
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
如果遇到ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
执行FLUSH PRIVILEGES;
没有问题就直接执行
#生效。该操作很重要!
mysql>FLUSH PRIVILEGES;
3.重启A主mysql数据库
service mysqld restart
2、从库设置
打开my.cnf配置文件
vi /etc/mysql/my.cnf
添加下面内容
[mysqld]
bind-address=0.0.0.0
port=3306
user=root
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
#socket=/var/lib/mysql/mysql.socket
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
max_allowed_packet = 1G
symbolic-links=0
explicit_defaults_for_timestamp=true
log-bin = mysql-bin
server-id =201
skip-grant-tables
3、从库创建数据库目录
在主库执行:
所有库所有表都被锁定只读
mysql> flush tables with read lock;
两种方式:
(1)数据库版本一致情况
--远程拷贝至slave服务器中的数据目录
scp -r /var/lib/mysql/ibdata1 192.168.15.116:/data/mysql/
scp -r /var/lib/mysql/inception_mzm_product 192.168.15.116:/data/mysql
scp -r /var/lib/mysql/mzm_product 192.168.15.116:/data/mysql
chown -R mysql:mysql /data/mysql/
(2)数据库版本不一致
备份数据库文件:
mysqldump -uroot -pmzm@movitech mzm_product > /data/backup/mzm_product.sql
mysqldump -uroot -pmzm@movitech inception_mzm_product > /data/backup/inception_mzm_product.sql
备份出的sql文件传到从库服务器
4、查看主mysql日志状态
show master status;(可以使用数据库客户端工具)
+------------------+----------+-----------------------------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+-----------------------------------+------------------+-------------------+
| mysql-bin.100232 | 3334 | mzm_product,inception_mzm_product | mysql | |
+------------------+----------+-----------------------------------+------------------+-------------------+
mysql> change master to master_host='192.168.16.115', master_user='root', master_password='mzm@movitech',MASTER_LOG_FILE='mysql-bin.100232',MASTER_LOG_POS=3334;
5、在主库执行
mysql> unlock tables;
6、从库执行
use inception_mzm_product;
set names utf8;
source /data/inception_mzm_product.sql;
use mzm_product;
set names utf8;
source /data/mzm_product.sql;
6、开启同步
mysql> start slave;
7、在从库查看同步状态
mysql> show slave status\G;