Utilisation MySQLdump

se mettre dans le path du bin mysql puis

./mysqldump -u[login] -p[passwordCOLLEau-P] [db_name] > /tmp/[some-file-for-saving-the-datas] [enter password at the prompt] 

à mettre dans un crontab si on veut bien faire les choses pour récupérer des données UTF8 en latin1 (p.ex. si on fait du 4.1 → 4.0)

mysqldump Database table --default-character-set=latin1 > insertRechDoc1.sql

erreur lock tables

mysqldump: Got error: 23: Out of resources when opening file './xxx/xxx.MYD' (Errcode: 24) when using LOCK TABLES

mysqldump –skip-lock-tables

mysqldump -u[login] -p[password] --all-databases --add-drop-table

#quotes vars
/usr/local/mysql/bin/mysqldump -u root -p --add-drop-table --quote-names DBNAME > DBNAME.sql

mysqldump permet pas d'exclure des bases de données!!!

astuce trouvée sur http://lists.nyphp.org/pipermail/talk/2004-October/012361.html, à tester

> mysqldump -A will export all of the databases.  But, what if I want to 
> exclude a particular database?  Is it possible?  How, please?
> 
> I looked at the documentation and the --help output.  I'm hoping 
> there's an undocumented option. :)

Come to think of it, you could do this:

ls -al $mysql_dir  | grep ^d  | egrep -v '\.[\.]?' | grep -v $test | awk '{
mysqldump $9 }' | sh

where $mysql_dir is the directory wherein your mysql databases reside
and $test is the directory/database you don't want.

marche très bien, voici mon adaptation; voici un autre script plus riche qui fait la même chose

Autre exemple rapide et simple

foreach i (users pre_booking textpv LocalNumbers MainLicences companies) 
        /usr/local/mysql/bin/mysqldump -h external.server.ch -u xxx -pPassword dbName $i | gzip > $i_`date +\%d_\%m_\%Y_\%H:\%M`.sql.gz
end

mysqldumplocal.sh

Adapté dans ce script local: mysqldumplocal.sh

mysqldump -u[login] -p[password] database table --add-drop-table --default-character-set=latin1 > database.table.sql
       ·  --no-data, -d

          Do not write any table row information (that is, do not dump table contents). This is very useful if you want
          to dump only the CREATE TABLE statement for the table.
  • un script plus élaboré placé dans un crontab pour un backup de limesurvey
#!/bin/bash
#backup bases de donnée mysql limesurvey
chemin="/www/limesurvey/backups"
cd $chemin
file="$chemin/$(date +'%Y%m%d_%Hh%M')_crus.sql"
touch $file
/usr/local/mysql/bin/mysqldump limesurvey > $file
gzip $file
find $chemin -mtime +10 -name "*.gz" -type f -exec rm {} \;

et le crontab

crontab -l
 # min (0-59) hours (0-23) day (1-31) month (1-12) day of week (0-6, 0=Sunday)
00 * * * * /www/limesurvey/backups/_backups.sh

Exporter et importer dans différents formats

(source)

SQL n'est pas le seul format de sortie dans lequel vous pouvez sauvegarder vos bases de données MySQL. Le programme mysqldump vous permet de sauvegarder des enregistrements dans divers formats, dont CSV ou tout autre format avec vos propres délimiteurs. Il vous suffit d'ajouter l'argument –fields-terminated-by à la ligne de commande mysqldump:

$ mysqldump -u root -p secret --no-create-info --tab=/tmp --fields-terminated-by=',' stocksdb

mysqldump générera alors dans le répertorie /tmp un fichier qui contiendra les enregistrements issus de la table stocksdb, les champs étant séparés par une virgule. Si vous voulez que chaque ligne se termine par un séparateur particulier, vous pouvez aussi utiliser l'argument –lines-terminated-by pour marquer chaque ligne par un délimiteur donné.

Tout comme vous pouvez exporter des données dans différents formats, vous pouvez aussi les importer dans différents formats. Par exemple, si vous aviez un fichier séparé par des tabulations qui contient des enregistrements de table, comme suit:

1       DHDU    2589    77.56
2       YHOO    3200    45.65
3       WMT     100     53.29

vous pourriez utiliser l'outil mysqlimport pour lire les données dans une base de données MySQL, de la façon suivante:

$ mysqlimport -u root -p secret --fields-terminated-by='\t' test /tmp/portfolio.txt 

Import

Pour récupérer:

 mysql db_name < backup-file.sql

Doc officielle mysql5

Backup avec PHP p. ex. sur serveur distant n'autorisant pas la connection ssh:

pour introduire un nouvel utilisateur

(nécessite droits root):

SET PASSWORD FOR user@host = password( 'new_password' )

fulltext et booléen, permutations automatiques etc.

possible avec mysql4 http://www.nexen.net/docs/mysql/annotee/fulltext-boolean.php http://www.phpindex.com/articles/articles_lire.php3?element=234

exemple: soit le string $chercherR="+texteObligatoire1 +texteObligatoire1 -texteAsauter" 
à trouver dans un champ intitulé "libelle" dans n'importe quel ordre 

$all = "
SELECT structures_url.id,structures_libelle.id,url,id_url,libelle 
FROM `structures_url`, `structures_libelle` 
WHERE ((structures_url.id=structures_libelle.id_url) 
OR (id_url=0)) 
AND MATCH (libelle) AGAINST ('$chercherR' IN BOOLEAN MODE) ";

UPGRADES

http://dev.mysql.com/doc/mysql/fr/upgrading-from-4-0.html

http://dev.mysql.com/doc/mysql/fr/upgrading-grant-tables.html

http://dev.mysql.com/doc/mysql/fr/charset-conversion.html

http://dev.mysql.com/doc/mysql/fr/server-options.html

installer mysql4, copier bases, lancer démon puis

/usr/local/mysql/bin/ ./mysql_fix_privilege_tables –password=ROOTPASSWORD


http://dev.mysql.com/doc/mysql/fr/upgrading-from-3-23.html http://dev.mysql.com/doc/mysql/en/mysqldump.html

pour récupérer des données UTF8 en latin1 mysqldump Database table –default-character-set=latin1 > insertRechDoc1.sql

Récupérer une base parmi toutes les bases dans un backup

Récupérer une base parmi toutes les bases dans un backup

  • info/mysqldump.txt
  • Dernière modification: 2018/07/18 09:46
  • par radeff