【配置主(master)】:
【步骤一】:
修改my.cnf [mysqld]添加如下:
# log bin
server-id = 100 #必须唯一
log_bin = mysql-bin #开启及设置二进制日志文件名称
binlog_format = MIXED
sync_binlog = 1
expire_logs_days = 15 #二进制日志自动删除/过期的天数。默认值为0,表示不自动删除
binlog-do-db = jsc_charge #要同步的数据库
log_bin_trust_function_creators=1 #创建函数和存储过程需要
【步骤二】:
重启数据库
service mysql restart
登录mysql(/usr/local/mysql/bin目录下)
cd /usr/local/mysql/bin
./mysql -u root -p
创建从库同步账号
grant replication slave on *.* to 'repl'@'192.168.1.2' identified by '1234';
flush privileges;
记录下二进制日志文件名和位置
show master status;
【配置从(slave)】:
【步骤一】:
修改my.cnf [mysqld]添加如下:
# log bin
server-id = 101 #必须唯一
log_bin = mysql-bin #开启及设置二进制日志文件名称
binlog_format = MIXED
sync_binlog = 1
expire_logs_days = 15 #二进制日志自动删除/过期的天数。默认值为0,表示不自动删除
binlog-do-db = jsc_charge #要同步的数据库
log_bin_trust_function_creators=1 #创建函数和存储过程需要
【步骤二】:
重启数据库
service mysql restart
登录mysql(/usr/local/mysql/bin目录下)
cd /usr/local/mysql/bin
./mysql -u root -p
配置需要备份的主数据库(当主从不一致时,可以重新设置最新的log_pos)
(master_log_file和master_log_pos填上刚才记录下的二进制日志文件名和位置)
change master to master_host='192.168.1.1', master_user='root', master_password='1234',master_log_file='mysql-bin.000001', master_log_pos=2757;
flush privileges;
查询备份状态
show slave status\G
开启关闭备份命令
stop slave;
start slave;
【验证】:
主库上添加一张表,从库检查是否同步。
如果出现Slave_IO_Running = Connecting , Slave_SQL_Running: Yes
可能以下几种原因:1、网络不通(确认3306端口开放) 2、密码不对 3、pos不对
【 解决主从不一致办法】
//锁表,用于全备
flush tables with read lock;
//解锁表
unlock tables;
表示跳过一步错误,后面的数字可变
set global sql_slave_skip_counter =1;
【全备】
导出表结构和数据:
/usr/local/mysql/bin/./mysqldump -u root -p密码 数据库名 > /usr/local/mysql/数据库名.sql
导出存储过程和函数:
/usr/local/mysql/bin/./mysqldump -u root -p密码 -R -ndt 数据库名 > /usr/local/mysql/数据库名_func.sql
导入在mysql里
mysql> use 数据库名;
mysql> source /usr/local/mysql/数据库名.sql;
mysql> source /usr/local/mysql/数据库名_func.sql;
主my.cnf
[mysqld]
local-infile=0
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/data/mysql.err
pid-file=/usr/local/mysql/data/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
lower_case_table_names=1
#log bin
server-id=100
log_bin=mysql-bin
binlog_format=MIXED
sync_binlog=1
expire_logs_days=15
binlog-do-db=jsc_charge
log_bin_trust_function_creators=1
从my.cnf
[mysqld]
local-infile=0
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/data/mysql.err
pid-file=/usr/local/mysql/data/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
lower_case_table_names=1
#log bin
server-id=101
log_bin=mysql-bin
binlog_format=MIXED
sync_binlog=1
expire_logs_days=15
binlog-do-db=jsc_charge
log_bin_trust_function_creators=1