mysql01

mysql的安装与配置

安装centos6.9 

网卡设置

1 cd /etc/sysconfig/network-scripts
2 vim ifcfg-eth0
3 onboot yes
4 DNS1=8.8.8.8

service network restart

mysql的安装

1.http://dev.mysql.com/downloads/repo/yum/

2.yum localinstall mysql57-community-release-el6-11.noarch.rpm
3.yum -y install mysql-community-server

重启mysql服务

service mysqld start

第一次登陆从log日志中取得随机密码

1 more /var/log/mysqld.log
"a temporary password is generated for root"
q 退出

修改密码的复杂度

1 修改密码的复杂度
2 set global validate_password_policy=0;
3 修改密码的长度
4 set global validate_password_length=1;
5 
6 alter user 'root'@'localhost' identified by 'root';

其他操作

 1 创建用户
 2 create user 'test'@'%'  identified by 'test';
 3 
 4 查看当前的用户
 5 select user,host from mysql.user;
 6 
 7 通过用户名和主机才能唯一确定一个用户
 8 alter user 'test'@'%'  indentified by '1234';
 9 
10 赋予权限
11 grant + 权限 + 数据库.数据表 to 用户
12 grant replication slave on *.* to 'test'@'%';
13 
14 回收权限
15 revoke all on *.* from 'test'@'%';
16 
17 删除用户
18 drop user 'test';
19 
20 备份数据库
21 mysqldump -uroot -p 数据库名  备份到的路径
22 mysqldump -uroot -p user > /root/mysqlback.sql
23 
24 恢复数据库
25 mysqldump -uroot -p mytest >~/bak/mytest.sql
26 user mytest;
27 drop table user;
28 quit
29 
30 mysql -uroot -p mytest < mytest.sql

主从复制

数据冗余,提高数据的安全性
提高服务器的负载

原理:从节点读取主节点的binlog日志
场景:数据库备份,读写分离

主从配置搭建

主192.168.239.140    从192.168.239.141

主机配置

1 创建用户
2 create user 'repl'@'192.168.239.%' indetified by 'repl';
3 
4 查看用户
5 select * from mysql.userG;
6 
7 赋予只读权限
8 grant replication slave on *.* to 'repl'@'192.168.239.%' identified by 'repl';

mysql 日志


Error log 错误日志
General query log 普通查询日志
slow query log 慢查询日志
Binary log 二进制日志文件

Binary log作用:增量备份,主从

 1 开启binlog日志
 2 vim /etc/my.cnf
 3 server-id=1  #多节点不可重复
 4 log-bin=/var/lib/mysql/mysql-bin  #指定bin log 的日志文件名
 5 
 6 
 7 mysql-bin.00001 是日志文件的数据文件
 8 mysql-bin.index 是日志文件的索引文件
 9 
10 查看bin log 文件配置
11 show variables like '%log_bin%';

查看二进制文件

 1 mysqlbinlog filename
 2  3 >show binlog events;
 4 
 5 
 6 查看具体的二进制文件
 7 >show binlog events in ‘Log_name’;
 8 
 9 每次重启服务器,服务器调用flush logs,会重创建新的bin-log日志文件
10 
11 flush logs 刷新日志文件,产生新的日志文件
12 
13 show master status;
14 查看当前日志状态
15 
16 show master logs
17 查看所有的日志文件
18 
19 reset master 
20 清空所有的日志文件
21 
23 binlog 恢复数据
24 
25 mysqlbinlog bin 日志文件名 | mysql -uroot -p
26 mysqlbinlog mysql-bin.000001 | mysql -uroot -p
27 
28 恢复指定数据
29 mysqlbinlog mysql-bin.000001-start-position 219 -stop-position 412 | mysql -uroot -p


从机配置

 1 复制网卡信息,修改网卡信息(随机)
 2 00:0C:29:D5:95:67 
 3 
 4 vi  /etc/sysconfig/network-scripts/ifcfg-eth0
 5 修改 mac 地址
 6 
 7 cd /etc/udev/rules.d
 8 rm -rf *
 9 
10 重启
11 reboot

从节点
配置同步日志
指定主节点的ip 端口,用户,等信息
启动从节点

1 配置日志
2 vi /etc/my.cnf
3 
4 server-id=2 与主机不一致
5 log-bin=/var/lib/mysql/relay-bin
6 
7 重启服务
8 service mysqld restart
1 change master to master_host='192.168.239.140' , master_port=3306,master_user='repl',master_password='repl',master_log_file='mysql-bin.000001',master_log_pos=0;
2 
3 start slave;
4 
5 show slave statusG
6 
7 注意
8 Slave_IO_Running  Connection  连接到主库,并读取主库的日志到本地,生成本地日志文件
9 Slave_SQL_Running  Yes  读取本地日志文件,并执行日志里的SQL命令。

异常处理

Slave_IO_Running NO
Slave_SQL_Running Yes

1 cd /var/lib/mysql
2 cat auto.cnf
3 
4 vi auto.cnf
5 随机修改server-uuid

Slave_IO_Running Connection
Slave_SQL_Running NO

 1 解决办法一、
 2 Slave_SQL_Running: No
 3 1.程序可能在slave上进行了写操作
 4 2.也可能是slave机器重起后,事务回滚造成的.
 5 一般是事务回滚造成的:
 6 解决办法:
 7 mysql> slave stop;
 8 mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
 9 mysql> slave start;
10 
11 解决办法二、
12 首先停掉Slave服务:slave stop
13 到主服务器上查看主机状态:
14 记录File和Position对应的值 ,注意master_log_file是否发生变化
15 进入master
16 mysql> show master status;
17 mysql>change master to master_host='192.168.239.140' , master_port=3306,master_user='repl',master_password='repl',master_log_file='mysql-bin.000001',master_log_pos=0;
18 mysql> show slave statusG

主机需要关闭防火墙

service iptables status

service iptable stop

slave
mysql -urepl -p -h192.168.239.140

ok

在主节点上操作,从机会默认同步

mysql 的主主复制就是两台 mysql 节点互为主从

在原来主从的基础上做如下操作:
1.开启原从节点的 binlog 日志

1 salve
2 
3 vim /etc/my.cnf
4 log-bin=/var/lib/mysql/mysql-bin
5 service mysqld restart

2.原从节点创建读取副本的用户

1 slave
2 create user 'repl'@'192.168.239.%' identified by 'repl';
3 grant all on *.* to 'repl'@'192.168.239.%';
4 
5 show master status;


3.在原主节点中让 master 指向从节点

1 change master to master_host='192.168.239.141',master_port=3306,master_user='repl',
2 master_password='repl',master_log_file='mysql-bin.000001',master_log_pos=616;

4.在原主节点执行 start slave 命令

master

start slave;

以上步骤即可完成主主节点的配置
下面有一个问题需要解决,就是自增主键的问题,按照上面的做法,如果向两个节点中插
入数据,一定会导致主键的重复,这里需要一个小的技巧
这里让第一台节点主键采用 1, 3 ,5 ,7.的方式自增
第二台节点采用 2, 4, 6, 8 的方式递增,这样就不会导致主键冲突了,在 MySQL5.7 中,不需要配置主键自增策略,每个库的操作都会让另外一个库递增

 1 master
 2 vim /etc/my.cnf
 3 
 4 auto_increment_increment=2
 5 auto_increment_offset=1
 6 
 7 
 8 slave
 9 vim /etc/my.cnf
10 
11 auto_increment_increment=2
12 auto_increment_offset=2

原文地址:https://www.cnblogs.com/quyangyang/p/11386629.html