Mysq关于用户相关操作
1.如何进行查看mysql中创建的用户、密码、主机等相关信息
MariaDB [(none)]> select host,user,password from mysql.user;

2.如果想要删除mysql.user中的某个账号应该怎么进行删除
MariaDB [(none)]> delete from mysql.user where user='backup';
2.1mysql数据库中删除数据的三种形式drop和truncate和delete。三种删除形式的强度由强到弱依次是:drop > truncate > delete.
(1)、drop(删除表) table tb ---tb表示数据表的名字.drop语句将删除表的结构被依赖的约束,触发器索引;依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。简单来说,就是把整个表去掉。以后要新增数据是不可能的,除非新增一个表。
(2)、truncate(清空表中的数据) table tb:删除内容、释放空间但不删除定义(保留表的数据结构)。与drop不同的是,知识清空表数据而已。
注意:truncate不能删除行数据,要删就要把表清空。
(3)、delete table tb where 条件:delete语句用于删除表中的行。delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存。以便进行回滚操作。
3.关于mysql故障相关知识总结
[root@master tmp]# mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
解决办法:查看socket的配置的路径是否不同的地方,这个是由于socket路径不同才导致的。
4.关于Mysql主从同步的项目实战
4.1简介
Mysql主从复制环境构建至少需2台服务器,可以配置一主多从、多主多从。Mysql主从复制集群至少需要2台数据库服务器,其中一台为Master库,另外一台为Slave库,Mysql主从数据同步是一个异步复制的过程,要实现复制首先需要在master上开启bin-log日志功能,bin-log日志用于记录在Master库中执行的增、删、修改、更新操作的sql语句,整个过程需要开启3个线程,分别是Master开启IO线程,Slave开启IO线程和SQL线程,具体主从同步原理详解如下:
Slave执行Slave start,Slave IO线程会通过在Master创建的授权用户连接上至Master,并请求Master从指定的文件和位置之后发送bin-log日志内容。
Master接收到来自Slave IO线程的请求后,Master IO线程根据Slave发送的执行bin-log日志position点之后的内容,然后返回给Slave的IO线程。
返回的信息中除了bin-log日志内容外,还有Master最新的bin-log文件名以及在bin-log中的下一个指定更新position点。
Slave IO线程接收到信息后,并将读取到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的bin-log的文件名和position点记录到master.info文件中,以便在下一次读取的时候能告知master从响应的bin-log的内容成在Master真实执行时候的那些可执行的SQL语句,将解析的SQL语句并在Slave里执行,执行成功后,Master库与Slave库保持数据一致。
4.2 主从复制原理结构图

4.3 主从复制的环境搭建
4.3.1 主从复制环境准备情况
Mysql主从复制环境构建至少需2台服务器,可以配置1主多从、多主多从。
4.3.2 主从复制的配置详情

4.3.3 主从复制搭建过程
(1).Master节点进行如下配置,编辑/etc/my.cnf文件
[mysqld]
symbolic-links=0
server-id = 1
log-bin = mysql-bin
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-external-locking
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
(2).Master数据库服务器命令行中创建tongbu用户及密码并设置权限,查看bin-log文件及position点,命令如下:
grant replication slave on *.* to 'tongbu'@'%' identified by '123456';
show master status;
(3).重新启动mariadb服务,启动服务的命令如下
systemctl restart mariadb
(4).Skave节点进行如下配置,编辑配置文件/etc/my.cnf
注意:Master与Slave端的配置文件当中server-id不能一样,Slave端无需开启bin-log日志功能。
[mysqld]
symbolic-links=0
server-id = 2
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-external-locking
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
(5).Slave端指定Master IP、用户名、密码、bin-log文件名(mysql-bin.000007)及position(385),代码如下:
change master to
master_host='192.168.111.128',master_user='tongbu',master_password='123456',master_log_file='mysql-bin.000028',master_log_pos=257;
(6).在slave启动slave start,并执行show slave status\G查看Mysql主从状态
start slave;
show slave status\G
(7).查看Slave端IO线程、SQL线程状态均为YES,代表Slave已正常连接Master实现同步:
Slave_IO_Running:YES
Slave_SQL_Running:YES
(8)。在Master节点上面创建数据库、创建表、并在表当中插入数据。查看Slave节点是否进行数据同步,如果同步成功,则证明主从同步是正常


注意:查看Slave节点,发现刚刚创建的在Master节点上的数据库同步到Slave节点上面。则说明主从同步是配置成功。

在xuexiao数据库当中创建表(banji),并在班级当中插入数据。看Slave节点的同步情况。


4.4 主从同步排错思路
Mysq主从同步集群在生成环境使用过程中,如果主从服务器之间通信条件差或者数据库数量非常大,容易导致Mysql主从同步延迟。
Mysq主从产生延迟之后,一旦主库宕机,会导致部分数据没有及时同步至从库,重新启动主库,会导致从库与主库同步错误,如何快速恢复主从同步关系呢,如下有两种方法:
(1).忽略错误后,继续同步
适用场景:此种方法使用于主从库数据内容相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况。
Master端执行如下命令,将数据库设置全局读锁,不允许写入新的数据:
flush tables with read lock;
Slave端停止Slave I/O及sql线程,同时将同步错误的SQL跳过1次,跳过会导致数据不一致,最后启动start slave,同步状态恢复,命令如下:
stop slave; set global sql_slave_skip_counter =1; start slave;
(2).重新做主从同步,完全同步;
使用场景:此种方法适用于主从库数据内容相差很大,或者要求数据完全统一的情况,数据需完全保持一致。
Master端执行如下命令,将数据库设置全局读锁,不允许写入新数据:
flush tables with read lock;
Master端基于mysqldump、xtrabackup工具进行数据库将完整的数据库备份,也可以用shell脚本或python脚本实现定时备份,备份成功之后,将完整的数据导入至从库,重新配置主从关系,当Slave端的IO线程、SQL线程均为YES之后,最后将Master端读锁解开即可,解锁命令如下:
unlock tables;

浙公网安备 33010602011771号