转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/46697825一、Linux内核和发行版本 uname -a cat /etc/issue 二、glibc的版本 /lib/libc.so.6 ---没有man函数据的动态链接库 三、MySQL的版本 MySQL二进制分发版的文件名格式为:mysql-VERSION-OS.tar.gz 例如:Linux-Generic(glibc 2.5) (x86,64bit),Compressed TAR Archive(mysql-5.6.16-linux-glibc2.5-x86_64.tar.gz) 1、下载 http://dev.mysql.com/downloads/mysql/ 2、查rpm包装在什么目录下 rpm -qpl MySQL-server-5.6.23-1.el6.i686.rpm |more rpm -qpl MySQL-client-5.6.23-1.el6.x86_64.rpm |more 3、更改rpm安装路径 rpm --help rpm --prefix --relocate rpmbuild spec binary rpm yum install 四、rpm安装rpm -ivh xxx.rmprpm -pql xxx.rmp MySQL 实例安装和启动1. 安装mysql_install_db --defaults-file=/root/data/mysql3306/my.cnf --basedir=/usr/ --datadir=/root/data/mysql3306/data2. 启动mysqld_safe --defaults-file=/root/data/mysql3306/my.cnf &3. 登录mysql -h127.0.0.1 -uroot -P3306 -p五、安装演示: 1.关闭mysql ps -ef |grep mysqld kill 3397 3801 2.安装cat init3306sh init3306.sh3.启动cat start3306.shsh start3306.sh 注意:mysql_install_db(通过安装rpm包产生mysql_install_db),有如下命令查看: rpm -pql MySQL-server-5.5.42-1.linux2.6.i386.rpm |grep install which mysql_install_db4.看日志tail -100f /root/data/mysql3306/log/alert.log 发生数据字典不存在,就会自动创建。。。。5.查看进程ps -ef |grep mysqld mysqld_safe是mysqld的父进程 6.登录sh my3306.sh --mysql -h127.0.0.1 -uroot --P3306六、脚本: 1.---安装mysql: init3306.sh rm -rf /root/data/mysql3306/data/* rm -rf /root/log/mysql3306/iblog/* rm -rf /root/log/mysql3306/binlog/* chmod -R 777 /root/data/mysql3306/data/ chmod -R 777 /root/log/mysql3306/iblog/ chmod -R 777 /root/log/mysql3306/binlog/ chmod 755 /root/data/mysql3306/my.cnf mysql_install_db --defaults-file=/root/data/mysql3306/my.cnf --basedir=/usr/ --datadir=/root/data/mysql3306/data chmod -R 777 /root/data/mysql/3306/data/ chmod -R 777 /root/log/mysql3306/iblog/ chmod -R 777 /root/log/mysql3306/binlog/ 2.--启动mysql: start336.sh mysqld_safe --defaults-file=/root/data/mysql3306/my.cnf & 3.--登录mysql: my3306.sh mysql -h127.0.0.1 -uroot -P3306 -p------研究下cd /root/data/mysql3306/data/mysql cd /root/data/mysql3306/data/performance_schema --性能相关的cd /root/data/mysql3306/data/test ---测试库cd /root/log/mysql3306/iblog/ ---innodb自己的数据和日志------了解my.cnf(多实例用端口来取分)vi /root/data/mysql3306/my.cnf[client]port=3306socket=/root/data/mysql3306/run/mysql.sock[mysql]port=3306promprt=\\u@\\d \\r:\\m:\\s>[mysqld]default-storage-engine=INNODBcharacter-set-server=iatin1explicit_defaults_for_timestamp=true#dirinnodb_log_group_home_dir=/root/log/mysql3306/ibloginnodb_data_home_dir=/root/log/mysql3306/iblogbasedir=/usrdatadir=/root/data/mysql3306/datatmpdir=/root/data/mysql3306/tmpslave_load_tmpdir=/root/data/mysql3306/tmplog-error=/root/data/mysql3306/log/alert.logslow_query_log_file=/root/data/mysql3306/log/slow.logrelay_log_info_file=/root/log/mysql3306/binlog/relay-log.infomaster-info-file=/root/log/mysql3306/binlog/master.infosocket=/root/data/mysql3306/run/mysql.socklog-bin=/root/log/mysql3306/binlog/binlogrelay-log=/root/log/mysql3306/binlog/relayloginnodb_force_recovery=0七、操作mysql1、登录mysql: 本地: mysql -u$usrename -p$password 远程: mysql -u$username -p$passwrod -h$ip 多实例:mysql -u$username -p$passwrod -P$port 2、用户操用(1)创建用户 方法一: insert into mysql.user(user,host,password) values('mytest','localhost',password('1234')); flush privilege; 方法二:create user mystest@'%' identified by '1234'; (2)用户授权 单纯的授权 grant all privileges on *.* to mytest@localhost; grant insert,update,delete,select on *.* to mytest@localhost; 授权并创建用户 grant all privileges on *.* to mytest@localhost identified by '1234';--创建用户并刷缓存, (等同于:insert into mysql.user ,flush privilege) grant all privileges on *.* to mytest@localhost; --对象权限 grant super on *.* to mytest@'%'; --系统权限 (supert相当于oracle中的dba权限) 3、实操show databases; --查看所有的数据库use mysql; --切到mysql数据库use tables; --在mysql库的tablesselect user,host,password from mysql.user; ----查mysql的所有用户,这个是由mysql_install_db创建的grant all privilege on *.* to test_1@'%'; --all代表(select update,delete,alter admin,super_acl),第一个*用户,第二个*对象,%所有的主机 mysql -h127.0.0.1 -utest_1 ----用grant创建的用户登录mysqlselect user(); ---当前是什么用户create database jianfeng; ---创建数据库(mysql中的数据库类似于oracle中的schemacreate table user(id int) engine=innodb ---创建表;grant select on jianfeng.user to test_1@'%'; ---jianfeng.user表的查询授权给test_1用户insert into mysql.user(user,host,password) values('test_2','%',password('1234')); --用这种方法创建test_2用户,有个问题权限没有flush privileges; ---把mysql.user表的用户权限重新刷到内存中show master status\G; change master to xxx; show processlist; ---查看当前用户的连接,线程形式(类似oracle中的v$session)4、drop table处理 rename table test_1 to test;(可以快速切回来rename table test to test_1;) 备份mysqldump:mysqldump -h127.0.0.1 -uroot mydb gyj_t1 >/tmp/gyj_t1.sql drop table test;5、自增主键(最好是自己定义主键,系统默认的是全局的增量)create table test (id int primary key auto_increment,name varchar(100)) engine=innodb;show create table test\G;create index test_name_idx on test(name);show create table test\G;insert into test(name) values('test');commit;select * from test;6、alter table处理 --会动原来的数据,需要拷贝数据alter table test add coll int;7、执行计划select * from test where id=1\G;explain select * from test where id=1;create index test_id_coll_idx on test(id,coll);explain select * from test where id=1;create index test_col_name on test(coll,name);explain select * from test where coll>10 and name='xx';show create table test\G;alter table test drop index test_name_idx;explain select * from test where coll>10 and name>'xx';8、数据导出(1)用dump导出数据mysqldump -h127.0.0.1 -uroot mydb gyj_t1 >/tmp/xx.sqldrop table test;source /tmp/xx.sql --导入数据(2)用select导出数据select * from test into outfile '/tmp/yy.sql';9、数据迁移(1)停机方式 mysqldump/loadata(2)不停机方式 物理上:搭备库(可以级联5.5-->5.6,向下兼容的) 把主库read only,备库就能把主库转过来的binlog消化完,再把备库切为主 show variables like '%read%'; set global read_only=on; insert into test(name) values('xx'); --插不进的,不能用root用户(3)不同平台小表:oracle--->mysql 脚本:synfull.pl (4)不同平台的一个大表迁多:增量迁移 a.把数据的全量迁过去 b.把迁的过程中产生的日志传过去 c.apply增量 d.锁表切切换 (5)增量 a.Oracle:物化视图 b.MySQL:trigger create trigger tri_test before insert,delete,update insert test_log value(type,id); end; / insert into test values(1,'xxx'); test_log value('insert','1'); lock table test; 应用切换 10、binlog reset master; --会把当前的binlog清掉 show binlog events; create table x1(id int); show binlog events; insert into x1 values(1); commit; show binlog events; 类似于: mysqlbinlog -vvv binlog.00001 > /tmp/binlog.log vi /tmp/binlog.log WAL: write ahead log,日志优先写11、归档 flush logs; show master status; write ahead log. recover backup, duriably. undo acid mvcc 12、参数和统计信息show variables; ----参数show variables like '%bin%';show status; ----统计信息show global status like'%insert%';insert into test(name) values('xxxxx');show variables like '%default%';set global default_storage_engine=myisam; ---不影响当前会话的操作,影响新建立的连接set session default_storage_engine=myisam; ---影响当前会话的操作---连接池max_connectmin_connectmax_idletime_outdisconnect --释放