Mysql主从备份记录

master在127.0.0.123上,slave在124上

//第一部分、先配置master
1、安装
#先删除默认安装的 mysql lib 库。
yum remove mysql*
yum remove mariadb*

#通过 RPM 命令进行安装
unzip MySQL-5.6.28-1.el6.x86_64.zip
rpm -ivh MySQL-server-5.6.28-1.el6.x86_64.rpm MySQL-devel-5.6.28-1.el6.x86_64.rpm MySQL-client-5.6.28-1.el6.x86_64.rpm

#mysql 初始化
/usr/bin/mysql_install_db
#关闭 mysql 服务
service mysql stop

2、修改配置
vim /etc/my.cnf

[client]
password = 123456
port = 3306
default-character-set=utf8    #client支持中文

[mysqld]
server-id=11 #数据库唯一ID,主从的标识符不能重复
log-bin = mysql-bin #开启bin-log,并指定文件目录和文件名前缀

#下面2个配置不建议做,建议基于整个数据库来做同步
#binlog-do-db=huanqiu #需要同步的数据库。如果是多个同步库,就以此格式另写几行即可。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库)。
#binlog-ignore-db=mysql #不同步mysql系统数据库。如果是多个不同步库,就以此格式另写几行;也可以在一行,中间逗号隔开。

sync_binlog = 1 #确保binlog日志写入后与硬盘同步,效率会有所降低,不过确保每条操作都写入到硬盘,如果后续出现mysql效率降低的情况,可以尝试将本值设置为0,即由操作系统来指定策略同步到硬盘。
binlog_checksum = none #跳过现有的采用checksum的事件,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none
binlog_format = mixed #bin-log日志文件格式,设置为MIXED可以防止主键重复。

port = 3306
character_set_server=utf8     #默认中文
character_set_client=utf8
collation-server=utf8_general_ci
lower_case_table_names=1 #忽略大小写
max_connections = 3000     #支持最大连接数
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
max_allowed_packet = 10M

[mysql]
default-character-set = utf8   #支持中文

3、启动mysql
#修改目录访问权限
chown -R mysql:mysql /var/lib/mysql

#设置 mysql 访问权限,请依次敲如下命令
mysqld_safe --user=mysql --skip-grant-tables --skip-networking & # 安全模式启动
mysql -uroot   # 无密码登录
mysql>   use mysql
mysql> UPDATE user SET Password=PASSWORD(‘123456’) where USER=‘root’; # 设置 root 帐户的访问密码
mysql> FLUSH PRIVILEGES;      # 刷新权限
mysql> quit;

service mysql restart   # 重启服务
mysql -uroot -p   # 带密码登录
mysql> SET PASSWORD = PASSWORD(‘123456’); # 初次使用,设置密码
mysql> use mysql
mysql> grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option; # 允许 root 帐户进行远程访问
mysql> grant replication slave,replication client on . to slave@‘127.0.0.124’ identified by “slave@123”; #配置从库读取权限
mysql> FLUSH PRIVILEGES;
mysql> quit;

#启动服务
service mysql restart

//第二部分、再配置slave
作为主从配置,slave需要配置read-only
1、同第一部分的配置一样。
2、修改配置
vim /etc/my.cnf

[client]
password = 123456
port = 3306
default-character-set=utf8    #client支持中文

[mysqld]
server-id=12 #数据库唯一ID,主从的标识符不能重复
log-bin = mysql-bin #开启bin-log,并指定文件目录和文件名前缀

#下面2个配置不建议做,建议基于整个数据库来做同步
#binlog-do-db=huanqiu #需要同步的数据库。如果是多个同步库,就以此格式另写几行即可。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库)。
#binlog-ignore-db=mysql #不同步mysql系统数据库。如果是多个不同步库,就以此格式另写几行;也可以在一行,中间逗号隔开。

read_only = 1
slave-skip-errors = all #跳过所有的错误错误,继续执行复制操作

port = 3306
character_set_server=utf8     #默认中文
character_set_client=utf8
collation-server=utf8_general_ci
lower_case_table_names=1 #忽略大小写
max_connections = 3000     #支持最大连接数
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
max_allowed_packet = 10M

[mysql]
default-character-set = utf8   #支持中文

3、启动mysql
#修改目录访问权限
chown -R mysql:mysql /var/lib/mysql

#设置 mysql 访问权限,请依次敲如下命令
mysqld_safe --user=mysql --skip-grant-tables --skip-networking & # 安全模式启动
mysql -uroot   # 无密码登录
mysql>   use mysql
mysql> UPDATE user SET Password=PASSWORD(‘123456’) where USER=‘root’; # 设置 root 帐户的访问密码
mysql> FLUSH PRIVILEGES;      # 刷新权限
mysql> quit;

service mysql restart   # 重启服务
mysql -uroot -p   # 带密码登录
mysql> SET PASSWORD = PASSWORD(‘123456’); # 初次使用,设置密码
mysql> use mysql
mysql> grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option; # 允许 root 帐户进行远程访问
mysql> FLUSH PRIVILEGES;
mysql> quit;

#启动服务
service mysql restart

mysql> stop slave; #执行同步前,要先关闭slave
mysql> change master to master_host=‘127.0.0.123’,master_port = 3306,master_user=‘slave’,master_password=‘slave@123’;

mysql> start slave;
mysql> show slave status \G;

核心:当IO和SQL线程的状态均为Yes,则表示主从已实现同步了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

//第三部分、主从全部设置自启动服务
主和从全部输入如下命令,重启也不影响主从之间的同步
chkconfig --add mysql
chkconfig mysql on

//第四部分、如果主从不一致,需要从主中恢复数据到从中,或者一开始主中有数据,设置到从。
1、先锁定主
mysql> flush tables with read lock; #数据库只读锁定命令,防止导出数据库的时候有数据写入。unlock tables命令解除锁定

在主里执行
mysqldump -u root --single-transaction --all-databases --master-data=1 > /tmp/master_backup.sql

再传入到slave节点上,在从里执行
mysql> stop slave;
mysql> source /tmp/master_backup.sql
mysql> change master to master_host=‘127.0.0.123’,master_port = 3306,master_user=‘slave’,master_password=‘slave@123’;

mysql> start slave;

再将主解锁
mysql> unlock tables;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值