mysql 主从配置

【配置主(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


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhou_bo88

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值