MySQL-配置笔记(热备-主主-主从-主主从)

◆基础◆ MySQL数据库基本操作

◆登陆相关◆

mysql -u 用户名 -p 密码 -h 登陆地址 -P 端口 -s 套接字

◆用户相关◆

创建用户

create user '用户名' @ '授权方式' identified by '密码';

注:授权方式有 <% 允许远程管理> <localhost 允许本地管理> <192.168.*.*允许指定IP管理>



select Host,User,Password from mysql.user;                         #查询数据库用户

create user "用户名"@"授权方式" identified by "密码";                 #创建用户
drop user "用户名"@"授权方式";                                       #删除用户

set password for "用户名"@"授权方式" = password("新密码");            #修改密码

set password=password("123");                                      #修改登陆用户的密码


grant privileges on databasename.tablename to "username"@"host";   #授权用户

revoke privileges on database.tablename from "username"@"host"     #撤销用户授权

==========================================================================================
privileges:               #表示要授予什么权力 all,select,insert,delete,update

databasename.tablename     #要授权的数据库.表

"username"@"host"          #表示授权给哪个用户。
==========================================================================================

◆修改密码◆

mysqladmin -u root password 密码                        #设置初始化密码

set password=password( "密码");                         #修改登陆用户的密码

set password for '用户名'@'登陆地址'=password('密码');    #修改密码并赋予权限

◆ROOT密码找回◆

a)关闭数据库

systemctl stop mysqld

b)修改主配置文件(/etc/my.cnf),在Mysqld区域添加以下↓纪录

skip-grant-table

c)重启数据库

systemctl restart mysqld

d)直接登陆数据库

mysql -u root

e)执行命令,修改root的登陆密码

update mysql.user set password=password("123123") where user='root';

f)将主配置文件的skip-grant-table属性去掉即可

skip-grant-table

◆基础SQL语句◆ >增 删 改 查<

增加

create database 数据库名                              #创建数据库

create    table    表名 (字段值 字段类型)             #创建表

例:
mysql> create table    表名 (
-> Uid int unsigned not null auto_increment,        #Uid,无符号型,不允许空,自增长
-> Uname char(20) not null default '??',            #Uname,字符型,不允许空,默认??
-> Uage int not null default '0',                   #Uage,整形,不允许空,默认0
-> primary key(Uid));                               #设置主键Uid


insert into 表名 (字段值) values (插入的数据);         #向表中插入数据


删除

drop database 数据库名                               #删除数据库

drop table 表名                                     #删除表

delete from 表名 where 字段=数值;                    #删除表中指定字段等于数值的记录

修改

update 表名 set 字段1=数值1 where 字段2=数值2         #更新字段1被更新字段2

update 表名 set 字段1=数值1 where 字段2 between 1 and 5;  #更新表字段2,在1到5之间的所有字段1的数值为数值1

alter table 表1名 rename 表2名;                          #将表1名称修改为表2 名称

alter table 表名 modify 字段名 字段类型;                   #将表中字段数据类型

alter table 表名 drop 字段;                              #删除表中字段

alter table 表名 add 字段名 字段类型 first;                #在表的最前面插入新字段

alter table 表名 add 字段名1 字段类型 after 字段名2         #在字段名2之后插入新字段

查询

show databases;                                         #查看数据库
show tables;                                            #查看数据表
describe    表名;                                        #查看表结构



◆数据库授权◆


grant all on *.* to "root"@"%";                            #授权一个已存在账号允许登陆最大权限

grant all on *.* to "lyshark"@" %" identified by "123";    #创建用户并授权远程登陆

show grants for "lyshark"@"%";                             #查看lyshark用户的远程登陆权限

revoke create on *.* from "lyshark"@"%";                   #取消lyshark用户的远程登陆权限


◆数据库备份与还原◆

数据库备份与还原

mysqldump -u root -p 数据库名 > 备份文件.sql                #备份单个数据库

mysql -u root -p 数据库名 < 备份文件.sql                    #还原单个数据库

注意:以上↑备份方法并不会主动创建数据库,还原前应手动创建与原来相同的数据库

mysqldump -u root -p 数据库名 表名 > 备份文件.sql            #备份数据库中单个表

mysql -u root -p 还原到的数据库名 < 备份文件.sql              #还原数据库中单个表


mysqldump -u root -p --databases 数据库名 >备份文件.sql     #备份指定的数据库

mysql -uroot -p < 备份文件.sql                             #还指定的数据库

注意:以上↑备份方会主动创建数据库,还原时无需手动创建与原来相同的数据库

mysqldump -u root -p --all-databases >备份文件.sql         #备份整个数据库

mysql -u root -p <备份文件.sql                             #还原整个数据库


mysqlhotcopy --flushlog -u='root' -p='123123' --regexp=^w 备份文件保存位置

#以上↑解释    :    用户名    密码    备份开头是w的数据库    保存位置

 

MySQL    dump    与    MySQL    hotcopy 的区别

前者是一个SQL语句的集合    后者是快速稳健意义上的备份
前者可以使用MyISAM和InnoDB存储引擎    后者只支持MyISAM引擎
前者可以远程操作    后者只支持本地操作

◆案例1◆ MySQL 主-从 服务搭建

◆主从数据库都应执行的步骤◆

1.安装MySQL,设置初始密码,并启动服务

yum install -y mariadb mariadb-server

systemctl restart mariadb

mysql_secure_installation

2.修改MySQL主配置文件

编辑配置文件,在相应的区域追加写入以下内容

vim /etc/my.cnf

[mysqld]

log-bin=mysql-bin            #开起二进制日志文件
server-id=12                 #本台MySQL服务器ID(主从不能重复)

systemctl restart mariadb    #重启生效

◆主数据库执行◆

1.进入主数据库,授权从数据库登陆账号

grant replication slave on *.* to "用户名"@'%' identified by "密码";    #创建用于从服务器登陆的账号

show master status;                                                   #显示日志状态

MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 245 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)


◆从数据库执行◆

1.进入从数据库

change master to master_host='服务器IP',master_user='授权账号',master_password='密码',master_log_file='日志文件',master_log_pos=文件位置;

start slave;             #启用同步

show slave status\G;     #查看同步状态

注意:两个状态同时开启即可

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

◆案例2◆ MySQL 主-主 服务搭建 

=============================================================================
注意:

        由于是主主环境,两台主机互为主从,应反复再次做一遍操作
        如果是主主主就要同时做操作
=============================================================================


◆两台数据库都应执行的步骤◆

1.两台服务器同时安装MySQL并初始化

yum install -y mariadb mariadb-server

systemctl restart mariadb

mysql_secure_installation

2.将MySQL1的数据拷贝到MySQL2上,实现数据的一致性

flush tables with read lock;                      #锁定数据表为只读模式

mysqldump -u root -p --all-databases >back.sql    #备份数据库

scp back.sql root@192.168.1.13:/root              #将数据传递到远程主机

unlock tables;                                    #解除表锁定

mysql -uroot -p <back.sql                         #从数据库恢复数据

3.修改MySQL主配置文件(两台都要修改)

编辑配置文件,在相应的区域追加写入以下内容

vim /etc/my.cnf

[mysqld]

log-bin=mysql-bin                                  #开启二进制日志
server-id=10                                       #指定服务器ID号(两台不允许重复)
replicate-do-db=test                               #要同步的数据库
binlog-ignore-db=mysql                             #不需要同步的数据库
binlog-ignore-db=information_schema                #不需要同步的数据库
auto-increment-increment=2                         #每次自增长2
auto-increment-offset=1                            #自增长从1开始
systemctl restart mariadb

◆第一台数据库应执行的步骤◆

1.进入MySQL主数据库,创建从数据库登陆的账号

grant replication slave on *.* to '用户名'@'%' identified by '密码';    #创建用于从数据库登陆的用户

show master status;                                                   #查看二进制文件名


◆第二台数据库应执行的步骤◆

1.进入MySQL从数据库,指定登陆的账号地址等信息.

change master to master_host='主服务器IP',master_user='授权账号',master_password='密码',master_log_file='二进制文名',master_log_pos=文件空间大小;

start slave;            #启动同步功能

show slave status\G;    #查看同步状态


◆第二台数据库应执行的步骤◆
1.进入MySQL主数据库,创建从数据库登陆的账号

grant replication slave on *.* to '用户名'@'%' identified by '密码';    #创建用于从数据库登陆的用户

show master status;                                                   #查看二进制文件名


◆第一台数据库应执行的步骤◆

2.进入MySQL从数据库,指定登陆的账号地址等信息.

change master to master_host='主服务器IP',master_user='授权账号',master_password='密码',master_log_file='二进制文名',master_log_pos=文件空间大小;

start slave;            #启动同步功能

show slave status\G;    #查看同步状态

◆案例3◆ MySQL 主-主-从 服务搭建


◆主数据库应执行的步骤◆

1.两台主服务器都需要安装MySQL初始化并设置密码

yum install -y mariadb mariadb-server

systemctl restart mariadb

mysql_secure_installation

2.两台主服务器都应配置一下内容(两台主MySQL都需要配置)

vim /etc/my.cnf              #修改配置文件

写入以下内容↓
log-bin=mysql-bin            #开启二进制日志
server-id=147                #服务器ID号

systemctl restart mariadb    #重启服务

3.登陆主MySQL并创建用户从服务器登陆的用户 (两台主MySQL都需要配置)

mysql -uroot –p                                                         #登陆MySQL

grant replication slave on *.* to '授权用户'@'%' identified by '密码';    #创建从服务器用户

show master status;                                                     #显示日志状态

◆从数据库应执行的步骤◆ 切记此MySQL不能启动

1.修改从MySQL主配置文件

vim /etc/my.cnf

写入以下内容↓

[mysqld_multi]
mysqld=/usr/bin/mysqld_safe
mysqladmin=/usr/bin/mysqladmin
log=/tmp/multi.log

[mysqld147]                            #名称后面加数字,后期启动用(不应相同)
port=3306                              #端口号(不应相同)
pid-file=/var/lib/mysqla/mysqld.pid    #MySQL进程号保存位置
datadir=/var/lib/mysqla                #数据文件保存位置
socket=/var/lib/mysqla/mysql.sock      #指定登陆套接字
server-id=110                          #ID号,同一主从环境不能相同
user=mysql                             #MySQL登陆用户名

[mysqld148]                            #名称后面加数字,后期启动用(不应相同)
port=3307                              #端口号(不应相同)
pid-file=/var/lib/mysqlb/mysqld.pid    #MySQL进程号保存位置
datadir=/var/lib/mysqlb                #数据文件保存位置    
socket=/var/lib/mysqlb/mysql.sock      #指定登陆套接字
server-id=110                          #ID号,同一主从环境不能相同
user=mysql                             #MySQL登陆用户名

2.初始化数据库

mysql_install_db --datadir=/var/lib/mysqla --user=mysql    #初始化数据库
mysql_install_db --datadir=/var/lib/mysqlb --user=mysql    #初始化数据库

3.给相应目录赋予权限

cd /var/lib/
chown -R mysql:mysql /var/lib/mysqla/    #修改文件权限
chown -R mysql:mysql /var/lib/mysqlb/    #修改文件权限

4.启动相应服务器

mysqld_multi --defaults-file=/etc/my.cnf start 147    #开启147服务器
mysqld_multi --defaults-file=/etc/my.cnf start 148    #开启148服务器

5.登陆147和148数据库确定主从关系

mysql -P 3306 -S /var/lib/mysqla/mysql.sock    #登陆147数据库
mysql -P 3306 -S /var/lib/mysqlb/mysql.sock    #登陆148数据库
change master to master_host='服务器IP',master_user='授权账号',master_password='密码',master_log_file='日志文件',master_log_pos=文件位置;

start slave;             #启用同步

show slave status\G;     #查看同步状态

猜你喜欢

转载自www.cnblogs.com/LyShark/p/9062780.html
今日推荐