Perhaps something like these examples:
Show primary highways from OSM and borders and sea levels coming from another source (could be as well your private data)
http://hip.latuviitta.org/cgi-bin/ms_ows?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=563&HEIGHT=437&LAYERS=sea,borders,osm_viivat&TRANSPARENT=TRUE&FORMAT=image/png&BBOX=-369151.98300283286,6597900.0,1511076.628895184,8057331.444759207&SRS=EPSG:3067&STYLES=&sql=%28tags%20@%3E%20%27highway=%3Eprimary%27%29

It is a live service and you can select to show secondary highways instead
http://hip.latuviitta.org/cgi-bin/ms_ows?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=563&HEIGHT=437&LAYERS=sea,borders,osm_viivat&TRANSPARENT=TRUE&FORMAT=image/png&BBOX=-369151.98300283286,6597900.0,1511076.628895184,8057331.444759207&SRS=EPSG:3067&STYLES=&sql=%28tags%20@%3E%20%27highway=%3Esecondary%27%29

It is a live service and you can select to show primary but only if they do not have maxspeed tag
http://hip.latuviitta.org/cgi-bin/ms_ows?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=563&HEIGHT=437&LAYERS=sea,borders,osm_viivat&TRANSPARENT=TRUE&FORMAT=image/png&BBOX=-369151.98300283286,6597900.0,1511076.628895184,8057331.444759207&SRS=EPSG:3067&STYLES=&sql=%28tags%20@%3E%20%27highway=%3Eprimary%27%29%20AND%20not%20%28tags%20?%20%27maxspeed%27%29

Do you want to find the hairdresser POIs from OSM? It could be where your stuff is from your private data as well
http://hip.latuviitta.org/cgi-bin/ms_ows?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=563&HEIGHT=437&LAYERS=sea,borders,osm_pisteet&TRANSPARENT=TRUE&FORMAT=image/png&BBOX=-369151.98300283286,6597900.0,1511076.628895184,8057331.444759207&SRS=EPSG:3067&STYLES=&sql=%28tags%20@%3E%20%27shop=%3Ehairdresser%27%29

No Mapnik, no pre-rendered tiles nor OpenLayers are used for these examples. However, it would be easy to add these dynamic layers into OpenLayers map as WMS layers as described in the OpenLayers documentation http://dev.openlayers.org/releases/OpenLayers-2.10/examples/wms-untiled.html