MySQL使用方法及mysqlbinlog工具使用教程
一、MySQL基本使用方法
1、连接MySQL:
打开命令行窗口,输入以下命令连接到MySQL服务器:
mysql -h 主机地址 -u 用户名 -p
连接到本地主机上的MySQL服务器:
mysql -h 127.0.0.1 -u root -p
输入密码后即可登录到MySQL控制台。
2、创建数据库:
登录到MySQL控制台后,可以使用CREATE DATABASE
语句创建数据库:
CREATE DATABASE 数据库名;
创建一个名为testdb
的数据库:
CREATE DATABASE testdb;
3、选择数据库:
使用USE
语句选择要操作的数据库:
USE 数据库名;
选择刚才创建的testdb
数据库:
USE testdb;
4、创建数据表:
使用CREATE TABLE
语句创建数据表,并定义表结构和列:
CREATE TABLE 表名 ( 列名1 数据类型 [约束], 列名2 数据类型 [约束], ... );
创建一个名为users
的表:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
5、插入数据:
使用INSERT INTO
语句向表中插入数据:
INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);
向users
表中插入一条数据:
INSERT INTO users (username, password) VALUES ('testuser', 'testpass');
6、查询数据:
使用SELECT
语句查询表中的数据:
SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件;
查询users
表中的所有数据:
SELECT * FROM users;
7、更新数据:
使用UPDATE
语句更新表中的数据:
UPDATE 表名 SET 列名1=新值1, 列名2=新值2, ... WHERE 条件;
更新users
表中用户名为testuser
的用户的邮箱:
UPDATE users SET email='test@example.com' WHERE username='testuser';
8、删除数据:
使用DELETE FROM
语句删除表中的数据:
DELETE FROM 表名 WHERE 条件;
删除users
表中用户名为testuser
的用户:
DELETE FROM users WHERE username='testuser';
9、修改表结构:
使用ALTER TABLE
语句修改表结构,例如添加列、修改列、删除列等:
ALTER TABLE 表名 ADD 列名 数据类型 [约束]; ALTER TABLE 表名 MODIFY 列名 新数据类型 [新约束]; ALTER TABLE 表名 DROP COLUMN 列名;
向users
表中添加一个email
列:
ALTER TABLE users ADD email VARCHAR(100);
二、mysqlbinlog工具使用方法
1、查看binlog文件列表:
使用SHOW BINARY LOGS
语句查看所有的binlog文件:
SHOW BINARY LOGS;
或者使用SHOW MASTER LOGS
语句查看:
SHOW MASTER LOGS;
2、查看binlog文件内容:
使用mysqlbinlog
工具查看binlog文件内容:
mysqlbinlog /path/to/binlog/file
查看最新的binlog文件:
SHOW MASTER STATUS; # 获取File和Position信息 mysqlbinlog /var/lib/mysql/mysql-bin.xxxxx --start-position=xxxx --stop-position=yyyy;
/var/lib/mysql/mysql-bin.xxxxx
是binlog文件的路径,--start-position=xxxx
和--stop-position=yyyy
分别是起始和结束位置。
3、按日期或时间过滤binlog事件:
使用--start-datetime
和--stop-datetime
参数过滤指定时间段的binlog事件:
mysqlbinlog --start-datetime="2024-01-01 00:00:00" --stop-datetime="2024-01-02 00:00:00" /path/to/binlog/file > output.sql
过滤出2024年1月1日至2024年1月2日之间的所有binlog事件,并将其保存到output.sql
文件中。
4、跳过GTID事务:
如果不想处理包含GTID的事务,可以使用--skip-gtids
参数:
mysqlbinlog --skip-gtids /path/to/binlog/file
这将跳过所有包含GTID的事务。
5、恢复数据:
使用mysqlbinlog
工具将binlog中的SQL语句导出,然后通过MySQL命令行客户端导入以恢复数据:
mysqlbinlog /path/to/binlog/file | mysql -u用户名 -p密码 数据库名
将某个binlog文件中的事件恢复到testdb
数据库中:
mysqlbinlog /var/lib/mysql/mysql-bin.xxxxx | mysql -uroot -ptestdb