关闭、重启、MySQL操作方法:

/etc/init.d/mysql   start|stop|restart|reload|force-reload

/etc/my.cnf文件

默认是/etc/my.cnf文件。它包含6条命令,并且这6条命令被组织在3个配置段中。这些配置段与Samba配置文件中的配置段相似,并且

含有功能组名称和相关的命令。本文将逐行的说明这个文件的默认版本。如果用户进行了任何修改,将需要确保MySQL启动脚本(即

/etc/rc.d/init.d/mysqld)中的命令一致。

[mysqld]

在这个配置段之内,将会看到与MySQL守护进程相关的命令。

datadir=/var/lib/mysql

MySQL服务器把数据库存储在由datadir变量所定义的目录中。

Socket=/var/lib/mysql/mysql.sock

MySQL套接字把数据库程序局部的或通过网络连接到MySQL客户。

提示:MySQL被配置成使用InnoDB存储器引擎。如果用户在自己的系统上还没有一个InnoDB数据库,将需要给[mysqld]配置段添加skip-innodb语句。

[mysql.server]

在这个配置段之内,将会看到MySQL服务器守护进程有关的命令。这个配置段的较早期版本被命名为[mysql_server]。如果使用

MySQL4.X或MySQL4.X以上版本,将必须把这个配置段标题改成[mysql_server]。当启动MySQL服务时,它使用这个配置段中的

选项。

user=mysql

与MySQL服务相关联的标准用户名是mysql。它应该是/etc/passwd文件的一部分;如果在这个文件中没有发现它,用户可能还没有安装Red Hat Enterprise Linux mysql-server RPM程序包。

basedir=/var/lib

这表示MySQL数据库的顶级目录。它充当MySQL系统上的一个根目录;这个数据库中的其它目录都是相对于这个目录。

[safe_mysqld]

这个配置段包含MySQL启动脚本所引用的命令。如果使用MySQL4.X或4.X以上版本,必须把这个配置段改成[mysqld_safe]。

err-log=/var/log/mysqld.log

这是MySQL所关联的错误被发送到的这个文件。如果使用MySQL4.X或4.X以上版本,必须使用log-error指令替换这条命令。

pid-file=/var/run/mysqld/mysqld.pid

最后,pid-file指令定义MySQL服务器在运作期间的进程标识符(PID)。如果MySQL服务器当前没有运行,这个文件应该不存在。

提示:用户可以配置与用户特定相关的MySQL配置文件;为此,只需给指定用户主目录中的.my.cnf隐含文件添加所选的配置命令即可。

Mysql主从配置:

一,同步的原理:mysql主服务器运行进程,将表的写操作计入binlog,从服务器运行两个进程,其一,从主服务器取回数据binlog,另一个,运行其中的sql,使从服务器更新。

二,设置:(主机使用Freebsd ,mysql 4.1.20-standard-log ,从机使用windows xp 5.0.18-nt ,原则上要求主机从机系统,数据库系统版本一致,如果不一致,从机的数据库版本要高于主机)

1.主服务器:

(1)授权。GRANT REPLICATION SLAVE ON *.* TO user@host IDENTIFIED BY "password"

意义:给从机授复制权限。如果需要LOAD TABLE FROM MASTER 和LOAD DATA FROM MASTER 需要授select、reload 和super 权限给此用户。

测试:在从机上用mysql -uuser -hhost -ppassword连接主机。

(2)关闭主控服务器(/usr/local/mysql/bin/mysql.server stop视系统不同而不同),记录binlog的filename和position。

(2-1)FLUSH TABLE WITH READ LOCK

(2-2)SHOW MASTER STATUS记录file栏和position栏

意义:记录binlog的filename和position。FLUSH TABLE WITH READ

LOCK是因为mysql为了减少读写磁盘,会把部分binlog暂存到内存,到一定空间阀值一次性写入磁盘,这样做就是要求把这些binlog强制写到

磁盘。这步说实话有点问题,线上系统你敢关么?这个探讨一下,我试配的时候是这么做的。

意外处理:如果(2-2)出现空白,表明没有启用binlog。启用的方法是在my.cnf(*nix)或my.ini(win)中找到[mysqld]

加入log-bin=filename,或log-bin,后者采用机器名作为binlog的name。

(3)创建主服务器的快照。

有两种方法:

(3-1)进入mysql的数据文件夹,打包所有的数据文件夹,如果有INNODB的文件夹,还要把ibdata文件也打包。同时copy到各从机上。

(3-2) 使用mysqldump -uuser -ppassword --master-data 库名

表名>mastersql2slave.sql生成sql文件,如果需要所有库使用mysqldump -uuser -ppassword

--master-data --all-databases>mastersql2slave.sql

意义:相当于给从机形成一个同步的起点。

(4)修改配置文件。

修改my.cnf(*nix)或my.ini(win)在[mysqld]加入server-id=1(保证此ID主从各服务器间唯一)

(5)启动主服务器(/usr/local/mysql/bin/mysql.server start视系统不同而不同)

2.从属服务器

(1)如果加入过同步设置的机器使用新配置先使用RESET SLAVE , 如果从数据库已有一些其他数据,最好把他们移到其他备份目录。把刚才的快照恢复之。*nix下注意权限和属主。

(2)修改配置文件my.cnf(*nix)或my.ini(win)

(2-1)找到[mysqld]加入server-id=2(保证此ID主从各服务器间唯一)

(2-2)如果只想做某一个库的主从同步,可以在[mysqld]段写上replicate-do-db=库名。

(3)运行master转向语句。

(3-1)如果同步正在进行,运行stop slave停止同步。

(3-2)按实际情况运行CHANGE MASTER TO MASTER_HOST =

'host_name',MASTER_USER = 'user_name', MASTER_PASSWORD =

'password', MASTER_PORT = port_num, MASTER_CONNECT_RETRY =

count,MASTER_LOG_FILE = 'master_log_name',MASTER_LOG_POS =

master_log_pos,RELAY_LOG_FILE = 'relay_log_name',RELAY_LOG_POS =

relay_log_pos; 全部是可选项。遗漏则不变。MASTER_LOG_FILE

,MASTER_LOG_POS使用主服务器(2-2)步骤记下的数据。

(4)开启同步机制。start slave。

检查:

(4-1)从机上运行show slave status\G;

(4-2)如果:Slave_IO_Running: Yes并且Slave_SQL_Running: Yes则配置成功。如果不能同步,则有可能同步库名有问题。

(4-3)如果:Slave_IO_Running: No。则可能的原因是网络问题,binglog设置错误,host设置错误等等。

(4-4)如果:Slave_SQL_Running: No。则可能的原因是sql语句执行报错等等,有可能是主从数据库结构有问题。

(4-5) 如遇(4-3)或(4-4)问题,可在解决后运行start slave io_thread  或 start slave sql_thread 启动进程。直至(4-2)情况。

(4-6)此时在从机的mysql数据文件目录下应该有形如:

080910 19:39:41 [Note] Slave I/O thread: connected to master

'lgy@192.168.1.222:3306',  replication started in log

'c402sx-bin.000122' at position 42738307

080910

19:39:41 [Note] Slave SQL thread initialized, starting replication in

log 'c402sx-bin.000122' at position 23384516, relay log

'.\liuguanyu-relay-bin.000002' position: 23631758           的记录记录如默认叫hostname.err的文件里。